markup/goldmark: Fix attribute nilpointer - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d7b54a4c37c39fce60c25a745bae1d5987b2b966
 (DIR) parent 13ceef7599fe84ec210adc98b90884ae3ab2881f
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Mon, 25 Apr 2022 10:05:55 +0200
       
       markup/goldmark: Fix attribute nilpointer
       
       Fixes 9819
       
       Diffstat:
         M markup/goldmark/codeblocks/integra… |      48 +++++++++++++++++++++++++++++++
         M markup/goldmark/convert.go          |      18 ------------------
         M markup/goldmark/internal/extension… |       2 +-
       
       3 files changed, 49 insertions(+), 19 deletions(-)
       ---
 (DIR) diff --git a/markup/goldmark/codeblocks/integration_test.go b/markup/goldmark/codeblocks/integration_test.go
       @@ -302,3 +302,51 @@ Attributes: {{ .Attributes }}|Options: {{ .Options }}|
                testLanguage("bash", "Attributes: map[]|Options: map[style:monokai]|")
                testLanguage("hugo", "Attributes: map[style:monokai]|Options: map[]|")
        }
       +
       +func TestPanics(t *testing.T) {
       +
       +        files := `
       +-- config.toml --
       +[markup]
       +[markup.goldmark]
       +[markup.goldmark.parser]
       +autoHeadingID = true
       +autoHeadingIDType = "github"
       +[markup.goldmark.parser.attribute]
       +block = true
       +title = true
       +-- content/p1.md --
       +---
       +title: "p1"
       +---
       +
       +BLOCK
       +
       +Common
       +
       +-- layouts/_default/single.html --
       +{{ .Content }}
       +
       +
       +`
       +
       +        for _, test := range []struct {
       +                name     string
       +                markdown string
       +        }{
       +                {"issue-9819", "asdf\n: {#myid}"},
       +        } {
       +                t.Run(test.name, func(t *testing.T) {
       +                        t.Parallel()
       +                        b := hugolib.NewIntegrationTestBuilder(
       +                                hugolib.IntegrationTestConfig{
       +                                        T:           t,
       +                                        TxtarString: strings.ReplaceAll(files, "BLOCK", test.markdown),
       +                                },
       +                        ).Build()
       +
       +                        b.AssertFileContent("public/p1/index.html", "Common")
       +                })
       +        }
       +
       +}
 (DIR) diff --git a/markup/goldmark/convert.go b/markup/goldmark/convert.go
       @@ -16,9 +16,6 @@ package goldmark
        
        import (
                "bytes"
       -        "fmt"
       -        "path/filepath"
       -        "runtime/debug"
        
                "github.com/gohugoio/hugo/markup/goldmark/codeblocks"
                "github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
       @@ -26,11 +23,6 @@ import (
        
                "github.com/gohugoio/hugo/identity"
        
       -        "github.com/pkg/errors"
       -
       -        "github.com/spf13/afero"
       -
       -        "github.com/gohugoio/hugo/hugofs"
                "github.com/gohugoio/hugo/markup/converter"
                "github.com/gohugoio/hugo/markup/tableofcontents"
                "github.com/yuin/goldmark"
       @@ -178,16 +170,6 @@ func (c converterResult) GetIdentities() identity.Identities {
        var converterIdentity = identity.KeyValueIdentity{Key: "goldmark", Value: "converter"}
        
        func (c *goldmarkConverter) Convert(ctx converter.RenderContext) (result converter.Result, err error) {
       -        defer func() {
       -                if r := recover(); r != nil {
       -                        dir := afero.GetTempDir(hugofs.Os, "hugo_bugs")
       -                        name := fmt.Sprintf("goldmark_%s.txt", c.ctx.DocumentID)
       -                        filename := filepath.Join(dir, name)
       -                        afero.WriteFile(hugofs.Os, filename, ctx.Src, 07555)
       -                        fmt.Print(string(debug.Stack()))
       -                        err = errors.Errorf("[BUG] goldmark: %s: create an issue on GitHub attaching the file in: %s", r, filename)
       -                }
       -        }()
        
                buf := &render.BufWriter{Buffer: &bytes.Buffer{}}
                result = buf
 (DIR) diff --git a/markup/goldmark/internal/extensions/attributes/attributes.go b/markup/goldmark/internal/extensions/attributes/attributes.go
       @@ -101,7 +101,7 @@ func (a *transformer) Transform(node *ast.Document, reader text.Reader, pc parse
                                // Attributes for fenced code blocks are handled in their own extension,
                                // but note that we currently only support code block attributes when
                                // CodeFences=true.
       -                        if node.PreviousSibling().Kind() != ast.KindFencedCodeBlock && !node.HasBlankPreviousLines() {
       +                        if node.PreviousSibling() != nil && node.PreviousSibling().Kind() != ast.KindFencedCodeBlock && !node.HasBlankPreviousLines() {
                                        attributes = append(attributes, node)
                                        return ast.WalkSkipChildren, nil
                                }