Use multi reader instead to concat strings (#22099)

extract from #20326
This commit is contained in:
Lunny Xiao 2022-12-12 11:03:54 +08:00 committed by GitHub
parent 352a50d65f
commit 3e8285b824
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -305,18 +305,15 @@ func postProcess(ctx *RenderContext, procs []processor, input io.Reader, output
return err return err
} }
res := bytes.NewBuffer(make([]byte, 0, len(rawHTML)+50))
// prepend "<html><body>"
_, _ = res.WriteString("<html><body>")
// Strip out nuls - they're always invalid
_, _ = res.Write(tagCleaner.ReplaceAll([]byte(nulCleaner.Replace(string(rawHTML))), []byte("&lt;$1")))
// close the tags
_, _ = res.WriteString("</body></html>")
// parse the HTML // parse the HTML
node, err := html.Parse(res) node, err := html.Parse(io.MultiReader(
// prepend "<html><body>"
strings.NewReader("<html><body>"),
// Strip out nuls - they're always invalid
bytes.NewReader(tagCleaner.ReplaceAll([]byte(nulCleaner.Replace(string(rawHTML))), []byte("&lt;$1"))),
// close the tags
strings.NewReader("</body></html>"),
))
if err != nil { if err != nil {
return &postProcessError{"invalid HTML", err} return &postProcessError{"invalid HTML", err}
} }