From 973ae06f214122686c501ec28ff5f55e60fd4f0e Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 4 Dec 2015 11:35:04 +0800 Subject: [PATCH] Destroy the native window in next tick It fixes a possible crash when native code is iterating all windows while the JavaScript code decides to destroy a window. --- atom/browser/api/atom_api_window.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 79c91db3fa5d..84e5c53ebe65 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -159,6 +159,10 @@ Window::Window(v8::Isolate* isolate, const mate::Dictionary& options) { Window::~Window() { if (!window_->IsClosed()) window_->CloseContents(nullptr); + + // Destroy the native window in next tick because the native code might be + // iterating all windows. + base::MessageLoop::current()->DeleteSoon(FROM_HERE, window_.release()); } void Window::WillCloseWindow(bool* prevent_default) {