From 3bec484f1d766a4d498f1322cf5e5ffbb33462fd Mon Sep 17 00:00:00 2001
From: Cristian Maglie <c.maglie@arduino.cc>
Date: Wed, 13 May 2020 12:10:55 +0200
Subject: [PATCH] Fixed race condition in legacy i18n.LoggerToCustomStreams

---
 legacy/builder/i18n/i18n.go | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/legacy/builder/i18n/i18n.go b/legacy/builder/i18n/i18n.go
index c40c6d45b18..0cc3112940f 100644
--- a/legacy/builder/i18n/i18n.go
+++ b/legacy/builder/i18n/i18n.go
@@ -40,9 +40,12 @@ type Logger interface {
 type LoggerToCustomStreams struct {
 	Stdout io.Writer
 	Stderr io.Writer
+	mux    sync.Mutex
 }
 
 func (s LoggerToCustomStreams) Fprintln(w io.Writer, level string, format string, a ...interface{}) {
+	s.mux.Lock()
+	defer s.mux.Unlock()
 	target := s.Stdout
 	if w == os.Stderr {
 		target = s.Stderr
@@ -51,6 +54,8 @@ func (s LoggerToCustomStreams) Fprintln(w io.Writer, level string, format string
 }
 
 func (s LoggerToCustomStreams) UnformattedFprintln(w io.Writer, str string) {
+	s.mux.Lock()
+	defer s.mux.Unlock()
 	target := s.Stdout
 	if w == os.Stderr {
 		target = s.Stderr
@@ -59,6 +64,8 @@ func (s LoggerToCustomStreams) UnformattedFprintln(w io.Writer, str string) {
 }
 
 func (s LoggerToCustomStreams) UnformattedWrite(w io.Writer, data []byte) {
+	s.mux.Lock()
+	defer s.mux.Unlock()
 	target := s.Stdout
 	if w == os.Stderr {
 		target = s.Stderr