From 128f14efad90886ffef37c01ac1e20436a732f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Wed, 13 Jun 2018 08:57:26 +0200 Subject: [PATCH] hugolib: Reset the global pages cache on server rebuilds In Hugo 0.42, this could lead to errors of type `runtime error: invalid memory address or nil pointer dereference` in some rare situations. Note that this was also an issue before 0.42, but the symptom was then potentially stale list content on rebuilds on content changes. This commit also improves the above error message. Fixes #4845 --- hugolib/page_output.go | 3 +++ hugolib/site.go | 2 ++ 2 files changed, 5 insertions(+) diff --git a/hugolib/page_output.go b/hugolib/page_output.go index 132d755f2..c1550ccd1 100644 --- a/hugolib/page_output.go +++ b/hugolib/page_output.go @@ -141,6 +141,9 @@ func (p *PageOutput) Render(layout ...string) template.HTML { } func (p *Page) Render(layout ...string) template.HTML { + if p.mainPageOutput == nil { + panic(fmt.Sprintf("programming error: no mainPageOutput for %q", p.Path())) + } return p.mainPageOutput.Render(layout...) } diff --git a/hugolib/site.go b/hugolib/site.go index 8ff724d0a..831216779 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -1492,6 +1492,8 @@ func (s *Site) resetBuildState() { s.expiredCount = 0 + spc = newPageCache() + for _, p := range s.rawAllPages { p.subSections = Pages{} p.parent = nil