From b2a1909d799416d9b4536781fd92ac876ecefb60 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Thu, 3 Oct 2024 15:01:00 +0200 Subject: [PATCH] Use byte array on stack for copying data, limit size hint --- io/fs/mem.go | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/io/fs/mem.go b/io/fs/mem.go index de8b3cb7..d5bae91c 100644 --- a/io/fs/mem.go +++ b/io/fs/mem.go @@ -411,17 +411,9 @@ func (fs *memFilesystem) Symlink(oldname, newname string) error { return nil } -var chunkPool = sync.Pool{ - New: func() interface{} { - chunk := make([]byte, 128*1024) - return &chunk - }, -} - func copyToBufferFromReader(buf *bytes.Buffer, r io.Reader, _ int) (int64, error) { - chunkPtr := chunkPool.Get().(*[]byte) - chunk := *chunkPtr - defer chunkPool.Put(chunkPtr) + chunkData := [128 * 1024]byte{} + chunk := chunkData[0:] size := int64(0) @@ -466,7 +458,7 @@ func (fs *memFilesystem) WriteFileReader(path string, r io.Reader, sizeHint int) data: &bytes.Buffer{}, } - if sizeHint > 0 { + if sizeHint > 0 && sizeHint < 5*1024*1024 { newFile.data.Grow(sizeHint) }