summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/markup/html.go19
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("&lt;$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("&lt;$1"))),
+ // close the tags
+ strings.NewReader("</body></html>"),
+ ))
if err != nil {
return &postProcessError{"invalid HTML", err}
}