diff --git a/crates/backend/src/codegen/struct.rs b/crates/backend/src/codegen/struct.rs index 9ec3465c..05368b4a 100644 --- a/crates/backend/src/codegen/struct.rs +++ b/crates/backend/src/codegen/struct.rs @@ -281,7 +281,10 @@ impl NapiStruct { val: #name ) -> napi::Result { if let Some(ctor_ref) = napi::__private::get_class_constructor(#js_name_str) { - let wrapped_value = Box::into_raw(Box::new(val)); + let mut wrapped_value = Box::into_raw(Box::new(val)); + if wrapped_value as usize == 0x1 { + wrapped_value = Box::into_raw(Box::new(0u8)).cast(); + } let instance_value = #name::new_instance(env, wrapped_value.cast(), ctor_ref)?; #iterator_implementation Ok(instance_value) @@ -299,7 +302,10 @@ impl NapiStruct { pub fn into_reference(val: #name, env: napi::Env) -> napi::Result> { if let Some(ctor_ref) = napi::bindgen_prelude::get_class_constructor(#js_name_str) { unsafe { - let wrapped_value = Box::into_raw(Box::new(val)); + let mut wrapped_value = Box::into_raw(Box::new(val)); + if wrapped_value as usize == 0x1 { + wrapped_value = Box::into_raw(Box::new(0u8)).cast(); + } let instance_value = #name::new_instance(env.raw(), wrapped_value.cast(), ctor_ref)?; { let env = env.raw(); diff --git a/crates/napi/src/env.rs b/crates/napi/src/env.rs index 8e78310c..29bef0f0 100644 --- a/crates/napi/src/env.rs +++ b/crates/napi/src/env.rs @@ -680,7 +680,7 @@ impl Env { check_status!(unsafe { sys::napi_throw_error( self.0, - code.map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()), + code.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()), msg.as_ptr(), ) }) @@ -693,7 +693,7 @@ impl Env { check_status!(unsafe { sys::napi_throw_range_error( self.0, - code.map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()), + code.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()), msg.as_ptr(), ) }) @@ -706,7 +706,7 @@ impl Env { check_status!(unsafe { sys::napi_throw_type_error( self.0, - code.map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()), + code.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()), msg.as_ptr(), ) })