diff options
Diffstat (limited to 'internal/file/flags.go')
| -rw-r--r-- | internal/file/flags.go | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/internal/file/flags.go b/internal/file/flags.go index ca749e1..c06c27b 100644 --- a/internal/file/flags.go +++ b/internal/file/flags.go @@ -3,12 +3,13 @@ package file import ( "os" "strings" + "sync" "syscall" ) type Flags int32 -var flagsToHumanCache = map[Flags]string{} +var flagsToHumanCache sync.Map var unknownFlag = Flags(-1) type tuple struct { @@ -49,12 +50,16 @@ func (f Flags) Is(flag int) bool { } func (f Flags) BuildString(sb *strings.Builder) { - if str, ok := flagsToHumanCache[f]; ok { + if cached, ok := flagsToHumanCache.Load(f); ok { + str, _ := cached.(string) sb.WriteString(str) return } str := f.String() - flagsToHumanCache[f] = str + cached, loaded := flagsToHumanCache.LoadOrStore(f, str) + if loaded { + str, _ = cached.(string) + } sb.WriteString(str) } |
