From 16dbf68dca794d9900a2ad0e4459a1eb7218c800 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Mon, 21 Jul 2025 16:03:24 +0800 Subject: [PATCH] chore(napi): add UnwindSafe and RefUnwindSafe back to AbortSignal and AsyncWorkPromise (#2789) --- crates/napi/src/async_work.rs | 4 ++++ crates/napi/src/bindgen_runtime/js_values/task.rs | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/napi/src/async_work.rs b/crates/napi/src/async_work.rs index 5bceb29c..a28c12b9 100644 --- a/crates/napi/src/async_work.rs +++ b/crates/napi/src/async_work.rs @@ -2,6 +2,7 @@ use std::cell::Cell; use std::marker::PhantomData; use std::mem; use std::os::raw::c_void; +use std::panic::UnwindSafe; use std::ptr; use std::rc::Rc; @@ -31,6 +32,9 @@ pub struct AsyncWorkPromise { _phantom: PhantomData, } +impl UnwindSafe for AsyncWorkPromise {} +impl std::panic::RefUnwindSafe for AsyncWorkPromise {} + impl AsyncWorkPromise { pub fn promise_object<'env>(&self) -> PromiseRaw<'env, T> { PromiseRaw::new(self.env, self.raw_promise) diff --git a/crates/napi/src/bindgen_runtime/js_values/task.rs b/crates/napi/src/bindgen_runtime/js_values/task.rs index 3d35afa1..9b7df92c 100644 --- a/crates/napi/src/bindgen_runtime/js_values/task.rs +++ b/crates/napi/src/bindgen_runtime/js_values/task.rs @@ -1,8 +1,8 @@ -use std::cell::Cell; use std::ffi::c_void; use std::marker::PhantomData; use std::ptr; use std::rc::Rc; +use std::{cell::Cell, panic::UnwindSafe}; use crate::{ async_work, @@ -56,6 +56,9 @@ pub struct AbortSignal { status: Rc>, } +impl UnwindSafe for AbortSignal {} +impl std::panic::RefUnwindSafe for AbortSignal {} + #[repr(transparent)] struct AbortSignalStack(Vec);