Browse Source

fix: crash on exit in Event destructor (#26537)

Jeremy Rose 4 years ago
parent
commit
9d54fdfd12
1 changed files with 10 additions and 6 deletions
  1. 10 6
      shell/browser/api/event.cc

+ 10 - 6
shell/browser/api/event.cc

@@ -21,11 +21,15 @@ Event::Event() {}
 Event::~Event() {
   if (callback_) {
     v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
-    v8::HandleScope scope(isolate);
-    auto message = gin::DataObjectBuilder(isolate)
-                       .Set("error", "reply was never sent")
-                       .Build();
-    SendReply(isolate, message);
+    // If there's no current context, it means we're shutting down, so we don't
+    // need to send an event.
+    if (!isolate->GetCurrentContext().IsEmpty()) {
+      v8::HandleScope scope(isolate);
+      auto message = gin::DataObjectBuilder(isolate)
+                         .Set("error", "reply was never sent")
+                         .Build();
+      SendReply(isolate, message);
+    }
   }
 }
 
@@ -62,7 +66,7 @@ gin::ObjectTemplateBuilder Event::GetObjectTemplateBuilder(
 }
 
 const char* Event::GetTypeName() {
-  return "WebRequest";
+  return "Event";
 }
 
 // static