1
0
mirror of https://github.com/golang/go synced 2024-11-26 03:37:57 -07:00

html/template: Ensure release of namespace mutex in Template.Execute()

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6727046
This commit is contained in:
Robert Figueiredo 2013-03-12 14:35:14 -07:00 committed by Rob Pike
parent f878b67b0f
commit e1a5aa8105

View File

@ -45,18 +45,24 @@ func (t *Template) Templates() []*Template {
return m return m
} }
// Execute applies a parsed template to the specified data object, // escape escapes all associated templates.
// writing the output to wr. func (t *Template) escape() error {
func (t *Template) Execute(wr io.Writer, data interface{}) (err error) {
t.nameSpace.mu.Lock() t.nameSpace.mu.Lock()
defer t.nameSpace.mu.Unlock()
if !t.escaped { if !t.escaped {
if err = escapeTemplates(t, t.Name()); err != nil { if err := escapeTemplates(t, t.Name()); err != nil {
return err
}
t.escaped = true t.escaped = true
} }
} return nil
t.nameSpace.mu.Unlock() }
if err != nil {
return // Execute applies a parsed template to the specified data object,
// writing the output to wr.
func (t *Template) Execute(wr io.Writer, data interface{}) error {
if err := t.escape(); err != nil {
return err
} }
return t.text.Execute(wr, data) return t.text.Execute(wr, data)
} }