As documented in napi_wrap section, the returned reference must be deleted with `napi_delete_reference` in response to the finalize callback, in which `napi_unwrap` and `napi_remove_wrap` is not available. When the reference needs to be deleted early, it should be deleted after the wrapped value is not accessed with `napi_unwrap` and `napi_remove_wrap` too. This test is previously added in response to duplicating the test https://github.com/nodejs/node-addon-api/blob/main/test/objectwrap_constructor_exception.cc in the node-addon-api. As Napi::ObjectWrap<> is a subclass of Napi::Reference<>, napi_remove_wrap in the destructor of Napi::ObjectWrap<> is called before napi_delete_reference in the destructor of Napi::Reference<>. PR-URL: https://github.com/nodejs/node/pull/45406 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> |
||
|---|---|---|
| .. | ||
| 2_function_arguments | ||
| 3_callbacks | ||
| 4_object_factory | ||
| 5_function_factory | ||
| 6_object_wrap | ||
| 7_factory_wrap | ||
| 8_passing_wrapped | ||
| test_array | ||
| test_bigint | ||
| test_constructor | ||
| test_conversions | ||
| test_dataview | ||
| test_date | ||
| test_error | ||
| test_exception | ||
| test_function | ||
| test_general | ||
| test_handle_scope | ||
| test_instance_data | ||
| test_new_target | ||
| test_number | ||
| test_object | ||
| test_promise | ||
| test_properties | ||
| test_reference | ||
| test_reference_double_free | ||
| test_string | ||
| test_symbol | ||
| test_typedarray | ||
| .gitignore | ||
| common.c | ||
| common.h | ||
| entry_point.c | ||
| testcfg.py | ||