mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-15 17:30:44 +00:00
internal/testlog: clone attributes before appending (#35324)
WithAttrs and terminalFormat appended to h.attrs directly, which can mutate the shared slice when it has spare capacity. Clone attrs first to avoid corrupting parent handler state.
This commit is contained in:
parent
13bcbf0eef
commit
df7b89603c
1 changed files with 3 additions and 2 deletions
|
|
@ -22,6 +22,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"slices"
|
||||
"sync"
|
||||
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
|
|
@ -76,7 +77,7 @@ func (h *bufHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
|||
copy(records[:], h.buf[:])
|
||||
return &bufHandler{
|
||||
buf: records,
|
||||
attrs: append(h.attrs, attrs...),
|
||||
attrs: append(slices.Clone(h.attrs), attrs...),
|
||||
level: h.level,
|
||||
}
|
||||
}
|
||||
|
|
@ -186,7 +187,7 @@ func (h *bufHandler) terminalFormat(r slog.Record) string {
|
|||
return true
|
||||
})
|
||||
|
||||
attrs = append(h.attrs, attrs...)
|
||||
attrs = append(slices.Clone(h.attrs), attrs...)
|
||||
|
||||
fmt.Fprintf(buf, "%s[%s] %s ", lvl, r.Time.Format(termTimeFormat), r.Message)
|
||||
if length := len(r.Message); length < 40 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue