From a3d5a0bb530b5206c728eed9cb57323061922bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E5=8F=AF?= Date: Mon, 29 Apr 2024 18:02:54 +0800 Subject: [PATCH] fix: sync pool race condition (#947) --- internal/tracker/seen.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/internal/tracker/seen.go b/internal/tracker/seen.go index ce7dd4a..76df2d5 100644 --- a/internal/tracker/seen.go +++ b/internal/tracker/seen.go @@ -57,7 +57,11 @@ type SeenTracker struct { currentIdx int } -var pool sync.Pool +var pool = sync.Pool{ + New: func() interface{} { + return &SeenTracker{} + }, +} func (s *SeenTracker) reset() { // Always contains a root element at index 0. @@ -331,12 +335,6 @@ func (s *SeenTracker) checkArray(node *unstable.Node) (first bool, err error) { } func (s *SeenTracker) checkInlineTable(node *unstable.Node) (first bool, err error) { - if pool.New == nil { - pool.New = func() interface{} { - return &SeenTracker{} - } - } - s = pool.Get().(*SeenTracker) s.reset()