summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/bindings.rs13
-rw-r--r--core/ops.rs1
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);