shithub: hugo

Download patch

ref: c97216e4f0f3021b12cd3803e512393be569c886
parent: bb04010cbfd92837685f98c3e0f5362ba00ce487
author: Bjørn Erik Pedersen <[email protected]>
date: Sat Nov 4 05:43:35 EDT 2017

i18n: Prevent data race in lang code handling

See #3564

--- a/i18n/i18n.go
+++ b/i18n/i18n.go
@@ -68,7 +68,9 @@
 		currentLang := lang
 
 		t.translateFuncs[currentLang] = func(translationID string, args ...interface{}) string {
+			tpMu.RLock()
 			tFunc, err := bndl.Tfunc(currentLang)
+			tpMu.RUnlock()
 			if err != nil {
 				jww.WARN.Printf("could not load translations for language %q (%s), will use default content language.\n", lang, err)
 			}
--- a/i18n/translationProvider.go
+++ b/i18n/translationProvider.go
@@ -25,7 +25,7 @@
 
 // Unfortunately this needs to be global, see
 // https://github.com/nicksnyder/go-i18n/issues/82
-var tpMu sync.Mutex
+var tpMu sync.RWMutex
 
 // TranslationProvider provides translation handling, i.e. loading
 // of bundles etc.