From a70bbd0696df3b0a6889650e48a07f8223151da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 20 Feb 2020 13:40:16 +0100 Subject: [PATCH] hugolib: Fix deletion of orphaned sections Avoid deleting inside the recursive walk. Fixes #6920 --- hugolib/content_map.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hugolib/content_map.go b/hugolib/content_map.go index 279c8e43a..efa2254b2 100644 --- a/hugolib/content_map.go +++ b/hugolib/content_map.go @@ -596,6 +596,7 @@ func (m *contentMap) deleteBundleMatching(matches func(b *contentNode) bool) { // Deletes any empty root section that's not backed by a content file. func (m *contentMap) deleteOrphanSections() { + var sectionsToDelete []string m.sections.Walk(func(s string, v interface{}) bool { n := v.(*contentNode) @@ -612,11 +613,15 @@ func (m *contentMap) deleteOrphanSections() { prefixBundle := s + cmBranchSeparator if !(m.sections.hasPrefix(s+"/") || m.pages.hasPrefix(prefixBundle) || m.resources.hasPrefix(prefixBundle)) { - m.sections.Delete(s) + sectionsToDelete = append(sectionsToDelete, s) } return false }) + + for _, s := range sectionsToDelete { + m.sections.Delete(s) + } } func (m *contentMap) deletePage(s string) {