From ce5416bf91ae2ec29b892da38c3f13eeac54cd6d Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Fri, 27 Jun 2025 11:35:58 +0200 Subject: [PATCH] Added a memory copy to fs.Walk to avoid data races --- src/fs/Walk_fast.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/fs/Walk_fast.go b/src/fs/Walk_fast.go index 6920ac0..0bf05fc 100644 --- a/src/fs/Walk_fast.go +++ b/src/fs/Walk_fast.go @@ -3,6 +3,7 @@ package fs import ( + "strings" "syscall" "unsafe" ) @@ -44,16 +45,10 @@ func Walk(directory string, callBack func(string)) error { continue } - for i, c := range dirent.Name { - if c != 0 { - continue - } - - bytePointer := (*byte)(unsafe.Pointer(&dirent.Name[0])) - name := unsafe.String(bytePointer, i) - callBack(name) - break - } + bytePointer := (*byte)(unsafe.Pointer(&dirent.Name[0])) + name := unsafe.String(bytePointer, 256) + null := strings.IndexByte(name, 0) + callBack(strings.Clone(name[:null])) } }