hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit bc70f2bf123d94fc3226754ec9f1f44748e98162
parent 0d7b05be4cb2391cbd280f6109c01ec2d3d7e0c6
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu, 10 Oct 2019 14:14:55 +0200

helpers: Fix data race in global logger init

Fixes #6409

Diffstat:
Mhelpers/general.go | 15+++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/helpers/general.go b/helpers/general.go
@@ -283,6 +283,13 @@ type DistinctLogger struct {
 	m      map[string]bool
 }
 
+func (l *DistinctLogger) Reset() {
+	l.Lock()
+	defer l.Unlock()
+
+	l.m = make(map[string]bool)
+}
+
 // Println will log the string returned from fmt.Sprintln given the arguments,
 // but not if it has been logged before.
 func (l *DistinctLogger) Println(v ...interface{}) {
@@ -347,11 +354,11 @@ var (
 	DistinctFeedbackLog = NewDistinctFeedbackLogger()
 )
 
-// InitLoggers sets up the global distinct loggers.
+// InitLoggers resets the global distinct loggers.
 func InitLoggers() {
-	DistinctErrorLog = NewDistinctErrorLogger()
-	DistinctWarnLog = NewDistinctWarnLogger()
-	DistinctFeedbackLog = NewDistinctFeedbackLogger()
+	DistinctErrorLog.Reset()
+	DistinctWarnLog.Reset()
+	DistinctFeedbackLog.Reset()
 }
 
 // Deprecated informs about a deprecation, but only once for a given set of arguments' values.