diff --git a/markup/goldmark/blockquotes/blockquotes.go b/markup/goldmark/blockquotes/blockquotes.go index f4c908e0ba9..2f5629d87db 100644 --- a/markup/goldmark/blockquotes/blockquotes.go +++ b/markup/goldmark/blockquotes/blockquotes.go @@ -75,20 +75,6 @@ func (r *htmlRenderer) renderBlockquote(w util.BufWriter, src []byte, node ast.N text := ctx.Buffer.Bytes()[pos:] ctx.Buffer.Truncate(pos) - // Extract a source sample to use for position information. - nn := n.FirstChild() - var start, stop int - for i := 0; i < nn.Lines().Len() && i < 2; i++ { - line := nn.Lines().At(i) - if i == 0 { - start = line.Start - } - stop = line.Stop - } - - // We do not mutate the source, so this is safe. - sourceRef := src[start:stop] - ordinal := ctx.GetAndIncrementOrdinal(ast.KindBlockquote) texts := string(text) @@ -110,6 +96,22 @@ func (r *htmlRenderer) renderBlockquote(w util.BufWriter, src []byte, node ast.N texts = "
" + texts[strings.Index(texts, "\n")+1:] } + var sourceRef []byte + + // Extract a source sample to use for position information. + if nn := n.FirstChild(); nn != nil { + var start, stop int + for i := 0; i < nn.Lines().Len() && i < 2; i++ { + line := nn.Lines().At(i) + if i == 0 { + start = line.Start + } + stop = line.Stop + } + // We do not mutate the source, so this is safe. + sourceRef = src[start:stop] + } + bqctx := &blockquoteContext{ page: ctx.DocumentContext().Document, pageInner: r.getPageInner(ctx), diff --git a/markup/goldmark/blockquotes/blockquotes_integration_test.go b/markup/goldmark/blockquotes/blockquotes_integration_test.go index 45c7caa0fc2..45c031098fc 100644 --- a/markup/goldmark/blockquotes/blockquotes_integration_test.go +++ b/markup/goldmark/blockquotes/blockquotes_integration_test.go @@ -81,3 +81,23 @@ title: "p1" "Blockquote Alert Page: |
This is a tip with attributes.
\n|p1|p1|", ) } + +func TestBlockquoteEmptyIssue12756(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +-- content/p1.md -- +--- +title: "p1" +--- + +> +-- layouts/_default/single.html -- +Content: {{ .Content }} + +` + + b := hugolib.Test(t, files) + b.AssertFileContent("public/p1/index.html", "Content:\n\n") +}