Fix recently introduced new data race in the shortcode handling
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 21 Nov 2015 19:03:18 +0000 (20:03 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 21 Nov 2015 19:03:18 +0000 (20:03 +0100)
Fixes #1599

hugolib/shortcode.go

index e65a859892b2b63d14e4f14eaa8c0906039abfcd..c49418b8562d72078d5e970b42137d965737b179 100644 (file)
@@ -343,9 +343,14 @@ Loop:
                        if tmpl == nil {
                                return sc, fmt.Errorf("Unable to locate template for shortcode '%s' in page %s", sc.name, p.BaseFileName())
                        }
+
+                       // TODO(bep) Refactor/rename this lock strategy
+                       isInnerShortcodeCache.Lock()
                        if tmpl.Tree == nil {
+                               isInnerShortcodeCache.Unlock()
                                return sc, fmt.Errorf("Template for shortcode '%s' failed to compile for page '%s'", sc.name, p.BaseFileName())
                        }
+                       isInnerShortcodeCache.Unlock()
                        isInner = isInnerShortcode(tmpl)
 
                case tScParam: