]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix assignment to entry in nil map
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 10 Jul 2025 14:28:36 +0000 (16:28 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 11 Jul 2025 12:21:53 +0000 (14:21 +0200)
Fixes #13853

hugolib/cascade_test.go
resources/page/page_matcher.go
resources/page/page_matcher_test.go

index 3e3e471b7abf4f2907bf99e26aa8d1c76d996e3d..1f9309764333ba771793c0f72fab1f35af5842fa 100644 (file)
@@ -965,3 +965,27 @@ All.
 
        b.AssertLogContains("! WARN")
 }
+
+func TestCascadeNilMapIssue13853(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+-- content/test/_index.md --
+---
+title: Test
+cascade:
+- build:
+    list: local
+  target:
+    path: '{/test/**}'
+- params:
+    title: 'Test page'
+  target:
+    path: '{/test/**}'
+---
+`
+
+       // Just verify that it does not panic.
+       _ = Test(t, files)
+}
index 858def5efc21e6a604c7797b0fbe6992774e8aef..0ca41aa8554515f041f07402bab0db190c0a7c87 100644 (file)
@@ -177,6 +177,9 @@ func mapToPageMatcherParamsConfig(m map[string]any) (PageMatcherParamsConfig, er
        if pcfg.Fields == nil {
                pcfg.Fields = make(maps.Params)
        }
+       if pcfg.Params == nil {
+               pcfg.Params = make(maps.Params)
+       }
        for k, v := range m {
                switch strings.ToLower(k) {
                case "_target", "target":
@@ -186,9 +189,6 @@ func mapToPageMatcherParamsConfig(m map[string]any) (PageMatcherParamsConfig, er
                        }
                        pcfg.Target = target
                case "params":
-                       if pcfg.Params == nil {
-                               pcfg.Params = make(maps.Params)
-                       }
                        params := maps.ToStringMap(v)
                        for k, v := range params {
                                if _, found := pcfg.Params[k]; !found {
@@ -196,7 +196,6 @@ func mapToPageMatcherParamsConfig(m map[string]any) (PageMatcherParamsConfig, er
                                }
                        }
                default:
-
                        pcfg.Fields[k] = v
                }
        }
index 7f441d3ab73920fa44f06c3c0985c7dc0cb22030..8b9cbccd42170960c3800e2fed33c949e6af71df 100644 (file)
@@ -89,6 +89,7 @@ func TestPageMatcher(t *testing.T) {
                        return v
                }
                c.Assert(fn(map[string]any{"_target": map[string]any{"kind": "page"}, "foo": "bar"}), qt.DeepEquals, PageMatcherParamsConfig{
+                       Params: maps.Params{},
                        Fields: maps.Params{
                                "foo": "bar",
                        },