diff --git a/go/totp.go b/go/totp.go index 5e2a78a..fa56380 100644 --- a/go/totp.go +++ b/go/totp.go @@ -130,17 +130,16 @@ func loadConfigs() { //export getConfigNames func getConfigNames() (**C.char, C.int) { - names := make([]*C.char, len(configs)) - i := 0 + configsLen := len(configs) + cArray := C.malloc(C.size_t(configsLen) * C.size_t(unsafe.Sizeof(uintptr(0)))) + + ar := unsafe.Slice((**C.char)(cArray), configsLen) + j := 0 for name := range configs { - names[i] = C.CString(name) - i++ + ar[j] = C.CString(name) } - cArray := (**C.char)(unsafe.Pointer(&names[0])) - runtime.KeepAlive(cArray) - - return cArray, C.int(len(names)) + return (**C.char)(cArray), C.int(configsLen) } //export getCode