mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Use html.Parse rather than html.ParseFragment (#16223)
* Use html.Parse rather than html.ParseFragment There have been a few issues with html.ParseFragment - just use html.Parse instead. * Skip document node Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -304,27 +304,26 @@ func postProcess(ctx *RenderContext, procs []processor, input io.Reader, output
 | 
			
		||||
	_, _ = res.WriteString("</body></html>")
 | 
			
		||||
 | 
			
		||||
	// parse the HTML
 | 
			
		||||
	nodes, err := html.ParseFragment(res, nil)
 | 
			
		||||
	node, err := html.Parse(res)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return &postProcessError{"invalid HTML", err}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, node := range nodes {
 | 
			
		||||
		visitNode(ctx, procs, node, true)
 | 
			
		||||
	if node.Type == html.DocumentNode {
 | 
			
		||||
		node = node.FirstChild
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	newNodes := make([]*html.Node, 0, len(nodes))
 | 
			
		||||
	visitNode(ctx, procs, node, true)
 | 
			
		||||
 | 
			
		||||
	for _, node := range nodes {
 | 
			
		||||
		if node.Data == "html" {
 | 
			
		||||
			node = node.FirstChild
 | 
			
		||||
			for node != nil && node.Data != "body" {
 | 
			
		||||
				node = node.NextSibling
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if node == nil {
 | 
			
		||||
			continue
 | 
			
		||||
	newNodes := make([]*html.Node, 0, 5)
 | 
			
		||||
 | 
			
		||||
	if node.Data == "html" {
 | 
			
		||||
		node = node.FirstChild
 | 
			
		||||
		for node != nil && node.Data != "body" {
 | 
			
		||||
			node = node.NextSibling
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if node != nil {
 | 
			
		||||
		if node.Data == "body" {
 | 
			
		||||
			child := node.FirstChild
 | 
			
		||||
			for child != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user