From 0bc979888971bcc497463a3667f555c9abaeda5e Mon Sep 17 00:00:00 2001 From: Graham Dennis Date: Mon, 30 Dec 2024 16:04:30 +1100 Subject: [PATCH] fix: concurrent mutations to prefixWriter --- internal/output/prefixed.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/output/prefixed.go b/internal/output/prefixed.go index 8898f249b3..68d941563e 100644 --- a/internal/output/prefixed.go +++ b/internal/output/prefixed.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "strings" + "sync" "github.com/go-task/task/v3/internal/logger" "github.com/go-task/task/v3/internal/templater" @@ -14,6 +15,7 @@ type Prefixed struct { logger *logger.Logger seen map[string]uint counter *uint + mutex *sync.Mutex } func NewPrefixed(logger *logger.Logger) Prefixed { @@ -23,6 +25,7 @@ func NewPrefixed(logger *logger.Logger) Prefixed { seen: make(map[string]uint), counter: &counter, logger: logger, + mutex: &sync.Mutex{}, } } @@ -85,6 +88,9 @@ func (pw *prefixWriter) writeLine(line string) error { line += "\n" } + defer pw.prefixed.mutex.Unlock() + pw.prefixed.mutex.Lock() + idx, ok := pw.prefixed.seen[pw.prefix] if !ok {