Skip to content

Commit b5811c4

Browse files
vmorozdanielleadams
authored andcommitted
node-api,test: fix test_reference_double_free crash
PR-URL: #44927 Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 8fffd05 commit b5811c4

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

test/js-native-api/test_reference_double_free/test_reference_double_free.c

+10-9
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,22 @@ static napi_value New(napi_env env, napi_callback_info info) {
4444

4545
static void NoopDeleter(napi_env env, void* data, void* hint) {}
4646

47-
static void DeleteImmediately(napi_env env, napi_callback_info info) {
47+
static napi_value DeleteImmediately(napi_env env, napi_callback_info info) {
4848
size_t argc = 1;
4949
napi_value js_obj;
5050
napi_ref ref;
51+
napi_valuetype type;
5152

52-
NODE_API_CALL_RETURN_VOID(env,
53-
napi_get_cb_info(env, info, &argc, &js_obj, NULL, NULL));
53+
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, &js_obj, NULL, NULL));
5454

55-
napi_valuetype type;
56-
NODE_API_CALL_RETURN_VOID(env, napi_typeof(env, js_obj, &type));
55+
NODE_API_CALL(env, napi_typeof(env, js_obj, &type));
56+
NODE_API_ASSERT(env, type == napi_object, "Expected object parameter");
57+
58+
NODE_API_CALL(env, napi_wrap(env, js_obj, NULL, NoopDeleter, NULL, &ref));
59+
NODE_API_CALL(env, napi_delete_reference(env, ref));
60+
NODE_API_CALL(env, napi_remove_wrap(env, js_obj, NULL));
5761

58-
NODE_API_CALL_RETURN_VOID(env,
59-
napi_wrap(env, js_obj, NULL, NoopDeleter, NULL, &ref));
60-
NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env, ref));
61-
NODE_API_CALL_RETURN_VOID(env, napi_remove_wrap(env, js_obj, NULL));
62+
return NULL;
6263
}
6364

6465
EXTERN_C_START

0 commit comments

Comments
 (0)