diff --git a/context.go b/context.go index 0beb1a2e..e444e5e1 100644 --- a/context.go +++ b/context.go @@ -175,8 +175,10 @@ func valueStrings(ctx *Context, rtn C.RtnStrings) []string { var result []string for i := 0; i < len(slice); i++ { s := slice[i] + defer C.free(unsafe.Pointer(s)) result = append(result, C.GoString(s)) } + defer C.free(unsafe.Pointer(rtn.strings)) return result } diff --git a/v8go.cc b/v8go.cc index b22cc734..7d9cd4af 100644 --- a/v8go.cc +++ b/v8go.cc @@ -1298,7 +1298,7 @@ RtnStrings ObjectGetPropertyNames(ValuePtr ptr) { Local names = maybe_names.ToLocalChecked(); uint32_t length = names->Length(); - const char* strings[length]; + const char **strings = new const char*[length]; for (int i = 0; i < length; i++) { Local name_from_array = names->Get(local_ctx, i).ToLocalChecked();