diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-03-26 11:45:12 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-03-27 15:43:56 +0200 |
commit | 9a0aa5fdbe3ef35b7cc1dd756f54f1b219225bfc (patch) | |
tree | cac18524ff403396098d3b4e7a3cae472d57c51e /hugolib/page_output.go | |
parent | 0aaf3c56a511c6582db4dbfb28879e964e6f2d92 (diff) |
hugolib: Wrap pageOutput create in sync.Once
Diffstat (limited to 'hugolib/page_output.go')
-rw-r--r-- | hugolib/page_output.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/hugolib/page_output.go b/hugolib/page_output.go index 20d051e8c..542c50e62 100644 --- a/hugolib/page_output.go +++ b/hugolib/page_output.go @@ -108,6 +108,21 @@ func (p *PageOutput) Render(layout ...string) template.HTML { // TODO(bep) output func (p *Page) Render(layout ...string) template.HTML { + p.pageOutputInit.Do(func() { + // If Render is called in a range loop, the page output isn't available. + // So, create one. + outFormat := p.outputFormats[0] + pageOutput, err := newPageOutput(p, true, outFormat) + + if err != nil { + p.s.Log.ERROR.Printf("Failed to create output page for type %q for page %q: %s", outFormat.Name, p, err) + return + } + + p.mainPageOutput = pageOutput + + }) + return p.mainPageOutput.Render(layout...) } |