diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index e0a89faf9cd..595018a395c 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -472,7 +472,8 @@ NativeWindowMac::NativeWindowMac(const mate::Dictionary& options, } NativeWindowMac::~NativeWindowMac() { - [NSEvent removeMonitor:wheel_event_monitor_]; + if (wheel_event_monitor_) + [NSEvent removeMonitor:wheel_event_monitor_]; } void NativeWindowMac::SetContentView(views::View* view) { @@ -509,6 +510,13 @@ void NativeWindowMac::Close() { } void NativeWindowMac::CloseImmediately() { + // Remove event monitor before destroying window, otherwise the monitor may + // call its callback after window has been destroyed. + if (wheel_event_monitor_) { + [NSEvent removeMonitor:wheel_event_monitor_]; + wheel_event_monitor_ = nil; + } + // Retain the child window before closing it. If the last reference to the // NSWindow goes away inside -[NSWindow close], then bad stuff can happen. // See e.g. http://crbug.com/616701.