From 3fcbf8789e7f873f8a562b200ab82ea7cec173d8 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Mon, 2 Mar 2020 12:30:46 -0800 Subject: Don't reset exception handle after calling ErrWithV8Handle::get_handle() (#4214) --- core/es_isolate.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'core/es_isolate.rs') diff --git a/core/es_isolate.rs b/core/es_isolate.rs index e0e414bc9..bc412c7b2 100644 --- a/core/es_isolate.rs +++ b/core/es_isolate.rs @@ -315,19 +315,14 @@ impl EsIsolate { let mut resolver = resolver_handle.get(scope).unwrap(); resolver_handle.reset(scope); - let exception = match ErrBox::downcast::(err) { - Ok(mut err) => { - let handle = err.get_handle(); - let exception = handle.get(scope).unwrap(); - handle.reset(scope); - exception - } - Err(err) => { + let exception = err + .downcast_ref::() + .and_then(|err| err.get_handle().get(scope)) + .unwrap_or_else(|| { let message = err.to_string(); let message = v8::String::new(scope, &message).unwrap(); v8::Exception::type_error(scope, message) - } - }; + }); resolver.reject(context, exception).unwrap(); scope.isolate().run_microtasks(); -- cgit v1.2.3