shithub: hugo

Download patch

ref: 6b922750f3d953b5a5c154c71221eccd3da5134a
parent: 93b04e67f633e96484c29158cad00e86abe64c1e
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Feb 28 07:15:33 EST 2016

Revert "Create template clone for late template execution"

This reverts commit 93b04e67f633e96484c29158cad00e86abe64c1e.

--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -595,7 +595,6 @@
 	if s.hasTheme() {
 		s.Tmpl.LoadTemplatesWithPrefix(s.absThemeDir()+"/layouts", "theme")
 	}
-	s.Tmpl.MarkReady()
 }
 
 func (s *Site) addTemplate(name, data string) error {
@@ -1367,15 +1366,11 @@
 	// this cannot be fanned out to multiple Go routines
 	// See issue #1601
 	// TODO(bep): Check the IsRenderable logic.
-
-	// Issue #1879
-	templ := s.Tmpl.Clone()
-
 	for _, p := range s.Pages {
 		var layouts []string
 		if !p.IsRenderable() {
 			self := "__" + p.TargetPath()
-			_, err := templ.New(self).Parse(string(p.Content))
+			_, err := s.Tmpl.New(self).Parse(string(p.Content))
 			if err != nil {
 				results <- err
 				continue
--- a/tpl/template.go
+++ b/tpl/template.go
@@ -37,7 +37,6 @@
 	Lookup(name string) *template.Template
 	Templates() []*template.Template
 	New(name string) *template.Template
-	Clone() *template.Template
 	LoadTemplates(absPath string)
 	LoadTemplatesWithPrefix(absPath, prefix string)
 	AddTemplate(name, tpl string) error
@@ -44,7 +43,6 @@
 	AddAceTemplate(name, basePath, innerPath string, baseContent, innerContent []byte) error
 	AddInternalTemplate(prefix, name, tpl string) error
 	AddInternalShortcode(name, tpl string) error
-	MarkReady()
 	PrintErrors()
 }
 
@@ -55,8 +53,6 @@
 
 type GoHTMLTemplate struct {
 	template.Template
-	clone  *template.Template
-	ready  bool
 	errors []*templateErr
 }
 
@@ -142,22 +138,6 @@
 func (t *GoHTMLTemplate) LoadEmbedded() {
 	t.EmbedShortcodes()
 	t.EmbedTemplates()
-}
-
-// MarkReady marks the template as "ready for execution". No changes allowed
-// after this is set.
-func (t *GoHTMLTemplate) MarkReady() {
-	t.clone = template.Must(t.Template.Clone())
-	t.ready = true
-}
-
-// Since Go 1.6, the template cannot change once executed. So we have to create
-// a clone and work with that in some rare cases.
-func (t *GoHTMLTemplate) Clone() *template.Template {
-	if !t.ready {
-		panic("template clone called too early")
-	}
-	return template.Must(t.clone.Clone())
 }
 
 func (t *GoHTMLTemplate) AddInternalTemplate(prefix, name, tpl string) error {