fix(napi): date and unwrap handling (#17369)

This commit is contained in:
Bartek Iwańczuk 2023-01-13 12:53:45 +01:00 committed by GitHub
parent a00e432297
commit 291dcc31f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 101 additions and 1 deletions

View file

@ -1484,6 +1484,11 @@ fn napi_get_date_value(
) -> Result {
let env: &mut Env = env.as_mut().ok_or(Error::InvalidArg)?;
let value = transmute::<napi_value, v8::Local<v8::Value>>(value);
if !value.is_date() {
return Err(Error::DateExpected);
}
let date = v8::Local::<v8::Date>::try_from(value).unwrap();
*result = date.number_value(&mut env.scope()).unwrap();
Ok(())
@ -2287,7 +2292,9 @@ fn napi_unwrap(
let shared = &*(env.shared as *const EnvShared);
let napi_wrap = v8::Local::new(&mut env.scope(), &shared.napi_wrap);
let ext = obj.get_private(&mut env.scope(), napi_wrap).unwrap();
let ext = v8::Local::<v8::External>::try_from(ext).unwrap();
let ext = v8::Local::<v8::External>::try_from(ext)
.ok()
.ok_or(Error::InvalidArg)?;
*result = ext.value();
Ok(())
}