hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit a70bbd0696df3b0a6889650e48a07f8223151da4
parent 24afe2b822b458bae8f2ca9a9e095339f820a2f6
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu, 20 Feb 2020 13:40:16 +0100

hugolib: Fix deletion of orphaned sections

Avoid deleting inside the recursive walk.

Fixes #6920

Diffstat:
Mhugolib/content_map.go | 7++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git 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) {