From d37cb02e4082f80816f6df8d1c6533b64e9ccdf2 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Fri, 1 Aug 2025 11:27:53 +0200 Subject: [PATCH] refactor(scanner): use recommended pattern for slice pool (#10225) ### Purpose Uses recommended pattern for slice pools to avoid copying the slice struct, suggested by the linter and actually used in the go stdlib, for example in `net/http/h2_bundle.go`. --- lib/scanner/blocks.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/scanner/blocks.go b/lib/scanner/blocks.go index 3cc70113a..3c420a03f 100644 --- a/lib/scanner/blocks.go +++ b/lib/scanner/blocks.go @@ -23,9 +23,11 @@ type Counter interface { Update(bytes int64) } +const bufSize = 32 << 10 // 32k + var bufPool = sync.Pool{ New: func() any { - return make([]byte, 32<<10) // 32k buffer + return new([bufSize]byte) // 32k buffer }, } @@ -61,7 +63,7 @@ func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, cou } // A 32k buffer is used for copying into the hash function. - buf := bufPool.Get().([]byte) //nolint:forcetypeassert + buf := bufPool.Get().(*[bufSize]byte)[:] //nolint:forcetypeassert var offset int64 lr := io.LimitReader(r, int64(blocksize)).(*io.LimitedReader) @@ -100,7 +102,7 @@ func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, cou hf.Reset() } - bufPool.Put(buf) + bufPool.Put((*[bufSize]byte)(buf)) hf.Reset() hashPool.Put(hf)