Use sync.Map for cached C strings

This commit is contained in:
DarthSim
2021-12-10 19:42:32 +06:00
parent d12bd7676b
commit 7d77f0afd3
2 changed files with 7 additions and 4 deletions

View File

@@ -1,16 +1,17 @@
package vips
import "C"
import "sync"
var cStringsCache = make(map[string]*C.char)
var cStringsCache sync.Map
func cachedCString(str string) *C.char {
if cstr, ok := cStringsCache[str]; ok {
return cstr
if cstr, ok := cStringsCache.Load(str); ok {
return cstr.(*C.char)
}
cstr := C.CString(str)
cStringsCache[str] = cstr
cStringsCache.Store(str, cstr)
return cstr
}