Skip to content

napi_wrap only allow one wrapper to one object #266

Closed
@sampsongao

Description

@sampsongao

I was updating the node-sass code to the current napi and I found an issue with napi_wrap check. So in napi_wrap, if we see the object is a wrapper, we return napi_invalid_arg. However, in node-sass, we do something like this:

template <class T>
napi_value SassValueWrapper<T>::get_js_object(napi_env env) {
  if (this->js_object == nullptr) {
  napi_value wrapper;
  napi_value ctor = T::get_constructor(env);
  CHECK_NAPI_RESULT(napi_new_instance(env, ctor, 0, nullptr, &wrapper));
  void* wrapped;
  CHECK_NAPI_RESULT(napi_unwrap(env, wrapper, &wrapped));
  delete static_cast<T*>(wrapped);
  CHECK_NAPI_RESULT(napi_wrap(env, wrapper, this, nullptr, nullptr, nullptr)); -----------> check failed
  CHECK_NAPI_RESULT(napi_create_reference(env, wrapper, 1, &this->js_object));
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions