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 +++++---------- core/isolate.rs | 4 ++-- 2 files changed, 7 insertions(+), 12 deletions(-) (limited to 'core') 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(); diff --git a/core/isolate.rs b/core/isolate.rs index 8bdd017a8..a9e5f44a5 100644 --- a/core/isolate.rs +++ b/core/isolate.rs @@ -1164,8 +1164,8 @@ impl ErrWithV8Handle { Self { err, handle } } - pub fn get_handle(&mut self) -> &mut v8::Global { - &mut self.handle + pub fn get_handle(&self) -> &v8::Global { + &self.handle } } -- cgit v1.2.3