Don't reset exception handle after calling ErrWithV8Handle::get_handle() (#4214)

This commit is contained in:
Bert Belder 2020-03-02 12:30:46 -08:00
parent 83d902a780
commit 3fcbf8789e
No known key found for this signature in database
GPG key ID: 7A77887B2E2ED461
2 changed files with 7 additions and 12 deletions

View file

@ -315,19 +315,14 @@ impl EsIsolate {
let mut resolver = resolver_handle.get(scope).unwrap();
resolver_handle.reset(scope);
let exception = match ErrBox::downcast::<ErrWithV8Handle>(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::<ErrWithV8Handle>()
.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();

View file

@ -1164,8 +1164,8 @@ impl ErrWithV8Handle {
Self { err, handle }
}
pub fn get_handle(&mut self) -> &mut v8::Global<v8::Value> {
&mut self.handle
pub fn get_handle(&self) -> &v8::Global<v8::Value> {
&self.handle
}
}