diff --git a/markup/goldmark/goldmark_integration_test.go b/markup/goldmark/goldmark_integration_test.go
index 23e22b5ca..356e60153 100644
--- a/markup/goldmark/goldmark_integration_test.go
+++ b/markup/goldmark/goldmark_integration_test.go
@@ -885,10 +885,27 @@ title: "p1"
-->
-XSS
+## XSS
+
+## More
+
+This is a word.
+
+This is a word.
+
+This is a word.
+
+This is a word.
+
+This is a word.
+
+
-- layouts/_default/single.html --
{{ .Content }}
`
diff --git a/markup/goldmark/hugocontext/hugocontext.go b/markup/goldmark/hugocontext/hugocontext.go
index e610bbbeb..e68acb8c3 100644
--- a/markup/goldmark/hugocontext/hugocontext.go
+++ b/markup/goldmark/hugocontext/hugocontext.go
@@ -169,14 +169,16 @@ func (r *hugoContextRenderer) getPage(w util.BufWriter) any {
return p
}
+func (r *hugoContextRenderer) isHTMLComment(b []byte) bool {
+ return len(b) > 4 && b[0] == '<' && b[1] == '!' && b[2] == '-' && b[3] == '-'
+}
+
// HTML rendering based on Goldmark implementation.
func (r *hugoContextRenderer) renderHTMLBlock(
w util.BufWriter, source []byte, node ast.Node, entering bool,
) (ast.WalkStatus, error) {
n := node.(*ast.HTMLBlock)
- isHTMLComment := func(b []byte) bool {
- return len(b) > 4 && b[0] == '<' && b[1] == '!' && b[2] == '-' && b[3] == '-'
- }
+
if entering {
if r.Unsafe {
l := n.Lines().Len()
@@ -193,7 +195,7 @@ func (r *hugoContextRenderer) renderHTMLBlock(
} else {
l := n.Lines().At(0)
v := l.Value(source)
- if !isHTMLComment(v) {
+ if !r.isHTMLComment(v) {
r.logRawHTMLEmittedWarn(w)
_, _ = w.WriteString("\n")
}
@@ -206,7 +208,7 @@ func (r *hugoContextRenderer) renderHTMLBlock(
} else {
l := n.Lines().At(0)
v := l.Value(source)
- if !isHTMLComment(v) {
+ if !r.isHTMLComment(v) {
_, _ = w.WriteString("\n")
}
}
@@ -221,17 +223,21 @@ func (r *hugoContextRenderer) renderRawHTML(
if !entering {
return ast.WalkSkipChildren, nil
}
+ n := node.(*ast.RawHTML)
+ l := n.Segments.Len()
if r.Unsafe {
- n := node.(*ast.RawHTML)
- l := n.Segments.Len()
for i := 0; i < l; i++ {
segment := n.Segments.At(i)
_, _ = w.Write(segment.Value(source))
}
return ast.WalkSkipChildren, nil
}
- r.logRawHTMLEmittedWarn(w)
- _, _ = w.WriteString("")
+ segment := n.Segments.At(0)
+ v := segment.Value(source)
+ if !r.isHTMLComment(v) {
+ r.logRawHTMLEmittedWarn(w)
+ _, _ = w.WriteString("")
+ }
return ast.WalkSkipChildren, nil
}