diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-12-05 08:10:22 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-05 21:40:22 +0530 |
commit | 55595ca1b74e07eb2365d5aec3861600e2266470 (patch) | |
tree | 3d32d362e60b8c2b6fbf9e57f939afb8f52f42db /ext/ffi/lib.rs | |
parent | 715f35d635bf5a4e972238e6ac8d290c0e096083 (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.rs | 3 |
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)?; |