Skip to content

Commit 31e543f

Browse files
authored
Fix InterruptCallback signature (#1892)
1 parent 7b66456 commit 31e543f

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/isolate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ pub type GcCallbackWithData = unsafe extern "C" fn(
544544
);
545545

546546
pub type InterruptCallback =
547-
unsafe extern "C" fn(isolate: &mut Isolate, data: *mut c_void);
547+
unsafe extern "C" fn(isolate: UnsafeRawIsolatePtr, data: *mut c_void);
548548

549549
pub type NearHeapLimitCallback = unsafe extern "C" fn(
550550
data: *mut c_void,

tests/test_api.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,7 +1075,7 @@ fn isolate_termination_methods() {
10751075
assert!(!handle.is_execution_terminating());
10761076
static CALL_COUNT: AtomicUsize = AtomicUsize::new(0);
10771077
extern "C" fn callback(
1078-
_isolate: &mut v8::Isolate,
1078+
_isolate: v8::UnsafeRawIsolatePtr,
10791079
data: *mut std::ffi::c_void,
10801080
) {
10811081
assert_eq!(data, std::ptr::null_mut());
@@ -1103,7 +1103,7 @@ fn thread_safe_handle_drop_after_isolate() {
11031103
assert!(!handle.is_execution_terminating());
11041104
static CALL_COUNT: AtomicUsize = AtomicUsize::new(0);
11051105
extern "C" fn callback(
1106-
_isolate: &mut v8::Isolate,
1106+
_isolate: v8::UnsafeRawIsolatePtr,
11071107
data: *mut std::ffi::c_void,
11081108
) {
11091109
assert_eq!(data, std::ptr::null_mut());
@@ -1164,11 +1164,15 @@ fn request_interrupt_small_scripts() {
11641164
let context = v8::Context::new(scope, Default::default());
11651165
let scope = &mut v8::ContextScope::new(scope, context);
11661166

1167+
scope.set_slot::<String>("hello".into());
1168+
11671169
static CALL_COUNT: AtomicUsize = AtomicUsize::new(0);
11681170
extern "C" fn callback(
1169-
_isolate: &mut v8::Isolate,
1171+
isolate: v8::UnsafeRawIsolatePtr,
11701172
data: *mut std::ffi::c_void,
11711173
) {
1174+
let isolate = unsafe { v8::Isolate::ref_from_raw_isolate_ptr(&isolate) };
1175+
assert_eq!(isolate.get_slot::<String>(), Some(&"hello".into()));
11721176
assert_eq!(data, std::ptr::null_mut());
11731177
CALL_COUNT.fetch_add(1, Ordering::SeqCst);
11741178
}

0 commit comments

Comments
 (0)