diff --git a/src/handle.rs b/src/handle.rs index 1c62bc7974..1c18489ec9 100644 --- a/src/handle.rs +++ b/src/handle.rs @@ -1147,16 +1147,17 @@ impl Eternal { } } - pub fn get<'s>(&self, scope: &mut HandleScope<'s, ()>) -> Local<'s, T> { + pub fn get<'s>( + &self, + scope: &mut HandleScope<'s, ()>, + ) -> Option> { unsafe { - scope - .cast_local(|sd| { - v8__Eternal__Get( - self as *const Self as *const Eternal, - sd.get_isolate_ptr(), - ) as *const T - }) - .unwrap() + scope.cast_local(|sd| { + v8__Eternal__Get( + self as *const Self as *const Eternal, + sd.get_isolate_ptr(), + ) as *const T + }) } } diff --git a/tests/test_api.rs b/tests/test_api.rs index cc7eb72bdd..06f4d493db 100644 --- a/tests/test_api.rs +++ b/tests/test_api.rs @@ -11990,14 +11990,16 @@ fn test_eternals() { let str1 = v8::String::new(&mut scope, "hello").unwrap(); assert!(eternal1.is_empty()); + assert!(eternal1.get(&mut scope).is_none()); eternal1.set(&mut scope, str1); assert!(!eternal1.is_empty()); - let str1_get = eternal1.get(&mut scope); + let str1_get = eternal1.get(&mut scope).unwrap(); assert_eq!(str1, str1_get); eternal1.clear(); assert!(eternal1.is_empty()); + assert!(eternal1.get(&mut scope).is_none()); } // Try all 'standalone' methods after isolate has dropped.