summaryrefslogtreecommitdiff
path: root/ext/ffi/lib.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-12-05 08:10:22 -0800
committerGitHub <noreply@github.com>2022-12-05 21:40:22 +0530
commit55595ca1b74e07eb2365d5aec3861600e2266470 (patch)
tree3d32d362e60b8c2b6fbf9e57f939afb8f52f42db /ext/ffi/lib.rs
parent715f35d635bf5a4e972238e6ac8d290c0e096083 (diff)
fix(ops): disallow auto-borrowing OpState across potential await point (#16952)
Fixes https://github.com/denoland/deno/issues/16934 Example compiler error: ``` error: mutable opstate is not supported in async ops --> core/ops_builtin.rs:122:1 | 122 | #[op] | ^^^^^ | = note: this error originates in the attribute macro `op` (in Nightly builds, run with -Z macro-backtrace for more info) ```
Diffstat (limited to 'ext/ffi/lib.rs')
-rw-r--r--ext/ffi/lib.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/ffi/lib.rs b/ext/ffi/lib.rs
index 52e101a92..7e7756c93 100644
--- a/ext/ffi/lib.rs
+++ b/ext/ffi/lib.rs
@@ -1829,9 +1829,10 @@ impl Future for CallbackInfo {
#[op]
fn op_ffi_unsafe_callback_ref(
- state: &mut deno_core::OpState,
+ state: Rc<RefCell<deno_core::OpState>>,
rid: ResourceId,
) -> Result<impl Future<Output = Result<(), AnyError>>, AnyError> {
+ let state = state.borrow();
let callback_resource =
state.resource_table.get::<UnsafeCallbackResource>(rid)?;