diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/bindings.rs | 13 | ||||
-rw-r--r-- | core/ops.rs | 1 |
2 files changed, 10 insertions, 4 deletions
diff --git a/core/bindings.rs b/core/bindings.rs index 1741ad3b5..6ea0b9b91 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -387,9 +387,16 @@ fn send( unsafe { &mut *(scope.isolate().get_data(0) as *mut Isolate) }; assert!(!deno_isolate.global_context.is_empty()); - let op_id = v8::Local::<v8::Uint32>::try_from(args.get(0)) - .unwrap() - .value() as u32; + let r = v8::Local::<v8::Uint32>::try_from(args.get(0)); + + if let Err(err) = r { + let s = format!("bad op id {}", err); + let msg = v8::String::new(scope, &s).unwrap(); + scope.isolate().throw_exception(msg.into()); + return; + } + + let op_id = r.unwrap().value() as u32; let control = match v8::Local::<v8::ArrayBufferView>::try_from(args.get(1)) { Ok(view) => { diff --git a/core/ops.rs b/core/ops.rs index 98407f157..6b1aec6ab 100644 --- a/core/ops.rs +++ b/core/ops.rs @@ -62,7 +62,6 @@ impl OpRegistry { existing.is_none(), format!("Op already registered: {}", name) ); - lock.push(Rc::new(op)); drop(name_lock); drop(lock); |