diff options
-rw-r--r-- | modules/markup/html.go | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go index 80b19ba35f..6b5a8e32d4 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -305,18 +305,15 @@ func postProcess(ctx *RenderContext, procs []processor, input io.Reader, output 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("<$1"))) - - // close the tags - _, _ = res.WriteString("</body></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("<$1"))), + // close the tags + strings.NewReader("</body></html>"), + )) if err != nil { return &postProcessError{"invalid HTML", err} } |