mirror of
				https://gitlab.gnome.org/GNOME/libxml2.git
				synced 2025-10-24 13:33:01 +03:00 
			
		
		
		
	HTML parser error with <noscript> in the <head>
For https://bugzilla.gnome.org/show_bug.cgi?id=615785 When the <noscript> is found, <head> is closed and a <body> element is created. The real <body id="xxx"> gets skipped over, so I can't see any of the body's attributes. Just don't close <head> when encountering a <noscript> Add a regression test too
This commit is contained in:
		
				
					committed by
					
						 Daniel Veillard
						Daniel Veillard
					
				
			
			
				
	
			
			
			
						parent
						
							4609e6c980
						
					
				
				
					commit
					a0cd075d94
				
			| @@ -1080,7 +1080,7 @@ static const char * const htmlStartClose[] = { | ||||
| "menu",		"p", "head", "ul", NULL, | ||||
| "p",		"p", "head", "h1", "h2", "h3", "h4", "h5", "h6", FONTSTYLE, NULL, | ||||
| "div",		"p", "head", NULL, | ||||
| "noscript",	"p", "head", NULL, | ||||
| "noscript",	"p", NULL, | ||||
| "center",	"font", "b", "i", "p", "head", NULL, | ||||
| "a",		"a", NULL, | ||||
| "caption",	"p", NULL, | ||||
|   | ||||
							
								
								
									
										10
									
								
								result/HTML/noscript.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								result/HTML/noscript.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <head> | ||||
| <title>omg</title> | ||||
| <noscript><link rel="stylesheet" href="http://foo.com"></noscript> | ||||
| </head> | ||||
| <body id="xxx"> | ||||
|         <p>yo</p> | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										0
									
								
								result/HTML/noscript.html.err
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								result/HTML/noscript.html.err
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										38
									
								
								result/HTML/noscript.html.sax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								result/HTML/noscript.html.sax
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| SAX.setDocumentLocator() | ||||
| SAX.startDocument() | ||||
| SAX.internalSubset(html, , ) | ||||
| SAX.startElement(html) | ||||
| SAX.ignorableWhitespace( | ||||
|     , 5) | ||||
| SAX.startElement(head) | ||||
| SAX.ignorableWhitespace( | ||||
|         , 9) | ||||
| SAX.startElement(title) | ||||
| SAX.characters(omg, 3) | ||||
| SAX.endElement(title) | ||||
| SAX.ignorableWhitespace( | ||||
|         , 9) | ||||
| SAX.startElement(noscript) | ||||
| SAX.startElement(link, rel='stylesheet', href='http://foo.com') | ||||
| SAX.endElement(link) | ||||
| SAX.endElement(noscript) | ||||
| SAX.ignorableWhitespace( | ||||
|     , 5) | ||||
| SAX.endElement(head) | ||||
| SAX.ignorableWhitespace( | ||||
|     , 5) | ||||
| SAX.startElement(body, id='xxx') | ||||
| SAX.characters( | ||||
|         , 9) | ||||
| SAX.startElement(p) | ||||
| SAX.characters(yo, 2) | ||||
| SAX.endElement(p) | ||||
| SAX.characters( | ||||
|     , 5) | ||||
| SAX.endElement(body) | ||||
| SAX.ignorableWhitespace( | ||||
| , 1) | ||||
| SAX.endElement(html) | ||||
| SAX.ignorableWhitespace( | ||||
| , 1) | ||||
| SAX.endDocument() | ||||
							
								
								
									
										10
									
								
								test/HTML/noscript.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/HTML/noscript.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>omg</title> | ||||
|         <noscript><link rel="stylesheet" href="http://foo.com"></noscript> | ||||
|     </head> | ||||
|     <body id="xxx"> | ||||
|         <p>yo</p> | ||||
|     </body> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user