Skip to content

Commit 6f03a5d

Browse files
committed
fix: improve Cif destructor by removing redundant argument value freeing and enhance error handling in Pointer creation
1 parent 2b42171 commit 6f03a5d

3 files changed

Lines changed: 11 additions & 9 deletions

File tree

NativeScript/ffi/Cif.mm

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,12 +191,6 @@
191191
free(argv);
192192
}
193193
if (avalues != nullptr) {
194-
// Free individual argument values
195-
for (int i = 2; i < cif.nargs; i++) {
196-
if (avalues[i] != nullptr) {
197-
free(avalues[i]);
198-
}
199-
}
200194
free(avalues);
201195
}
202196
if (shouldFree != nullptr) {

NativeScript/ffi/Interop.mm

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,8 +599,16 @@ napi_value interop_bufferFromData(napi_env env, napi_callback_info info) {
599599
bool isInstance = false;
600600
napi_value jsPointer = get_ref_value(env, bridgeState->pointerClass);
601601
napi_value result;
602-
napi_new_instance(env, jsPointer, 0, nullptr, &result);
602+
napi_status status = napi_new_instance(env, jsPointer, 0, nullptr, &result);
603+
604+
if (status != napi_ok) {
605+
return nullptr;
606+
}
607+
603608
Pointer* ptr = Pointer::unwrap(env, result);
609+
if (ptr == nullptr) {
610+
return nullptr;
611+
}
604612

605613
ptr->data = data;
606614
return result;

NativeScript/ffi/node_api_util.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ inline bool napiSupportsThreadsafeFunctions(void* dl) {
6565
napi_get_last_error_info(env, &error_info);
6666

6767
#define NAPI_THROW_LAST_ERROR \
68-
NAPI_ERROR_INFO \
69-
napi_throw_error(env, NULL, error_info->error_message);
68+
{ NAPI_ERROR_INFO \
69+
napi_throw_error(env, NULL, error_info ? error_info->error_message : "Unknown error"); }
7070

7171
#ifndef DEBUG
7272

0 commit comments

Comments
 (0)