-
Notifications
You must be signed in to change notification settings - Fork 17.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
html/template: broken after clone #12996
Comments
CL https://golang.org/cl/16104 mentions this issue. |
What does this mean? |
"Source" means the template that you are cloning from. Looks like it creates the copy directly and another in the "textClone.Templates()" loop. You can see how text/template Clone deals with it here: https://github.com/golang/go/blob/master/src/text/template/template.go#L89 |
@jbeda it does not create two copies of itself because, unlike html/template, in text/template |
CL https://golang.org/cl/31092 mentions this issue. |
Template.escape makes the assumption that t.Lookup(t.Name()) is t (escapeTemplate looks up the associated template by name and sets escapeErr appropriately). This assumption did not hold for a Cloned template, because the template associated with t.Name() was a second copy of the original. Add a test for the assumption that t.Lookup(t.Name()) == t. One effect of this broken assumption was #16101: parallel Executes racily accessed the template namespace because each Execute call saw t.escapeErr == nil and re-escaped the template concurrently with read accesses occurring outside the namespace mutex. Add a test for this race. Related to #12996 and CL 16104. Fixes #16101 Change-Id: I59831d0847abbabb4ef9135f2912c6ce982f9837 Reviewed-on: https://go-review.googlesource.com/31092 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
See https://play.golang.org/p/r83esZdCzY.
Produces:
For the "source" template, it looks like
Clone
creates two copies.I think adding this in the loop (after the definition of
name
would fix it):The text was updated successfully, but these errors were encountered: