From c5914516c851b3d3948c4d98c88c3b3f289b1bed Mon Sep 17 00:00:00 2001 From: Matt Crocker Date: Mon, 23 Oct 2017 22:38:55 -0700 Subject: [PATCH] Upstream good ideas from Muon --- atom/browser/api/event_emitter.h | 7 +++++-- atom/browser/api/trackable_object.h | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/atom/browser/api/event_emitter.h b/atom/browser/api/event_emitter.h index ead3beddaac5..cf580cc53bee 100644 --- a/atom/browser/api/event_emitter.h +++ b/atom/browser/api/event_emitter.h @@ -79,8 +79,11 @@ class EventEmitter : public Wrappable { const Args&... args) { v8::Locker locker(isolate()); v8::HandleScope handle_scope(isolate()); - v8::Local event = internal::CreateJSEvent( - isolate(), GetWrapper(), sender, message); + v8::Local wrapper = GetWrapper(); + if (wrapper.IsEmpty()) + return false; + v8::Local event = internal::CreateJSEvent( + isolate(), wrapper, sender, message); return EmitWithEvent(name, event, args...); } diff --git a/atom/browser/api/trackable_object.h b/atom/browser/api/trackable_object.h index e632f52b84c6..f9225924d053 100644 --- a/atom/browser/api/trackable_object.h +++ b/atom/browser/api/trackable_object.h @@ -62,7 +62,10 @@ class TrackableObject : public TrackableObjectBase, public: // Mark the JS object as destroyed. void MarkDestroyed() { - Wrappable::GetWrapper()->SetAlignedPointerInInternalField(0, nullptr); + v8::Local wrapper = Wrappable::GetWrapper(); + if (!wrapper.IsEmpty()) { + Wrappable::GetWrapper()->SetAlignedPointerInInternalField(0, nullptr); + } } bool IsDestroyed() {