1
0
mirror of https://github.com/go-task/task.git synced 2025-03-17 21:08:01 +02:00

fix: concurrent mutations to prefixWriter (#1974)

This commit is contained in:
Graham Dennis 2024-12-31 05:02:34 +11:00 committed by GitHub
parent fd3532812e
commit 0409c3c3ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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 {