From 4f0938c95880a1c58568af1415a66d187104d45f Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 7 Apr 2020 07:20:43 -0700 Subject: [PATCH] Address feedback from @zcbenz --- shell/browser/window_list.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/shell/browser/window_list.cc b/shell/browser/window_list.cc index f92accc868ac8..b9fce95ea0d17 100644 --- a/shell/browser/window_list.cc +++ b/shell/browser/window_list.cc @@ -10,6 +10,18 @@ #include "shell/browser/native_window.h" #include "shell/browser/window_list_observer.h" +namespace { +template +std::vector> ConvertToWeakPtrVector(std::vector raw_ptrs) { + std::vector> converted_to_weak; + for (auto* raw_ptr : raw_ptrs) { + base::WeakPtr weak = raw_ptr->GetWeakPtr(); + converted_to_weak.push_back(weak); + } + return converted_to_weak; +} +} // namespace + namespace electron { // static @@ -93,7 +105,10 @@ void WindowList::CloseAllWindows() { // static void WindowList::DestroyAllWindows() { WindowVector windows = GetInstance()->windows_; - for (auto* const& window : windows) { + std::vector> weak_windows = + ConvertToWeakPtrVector(windows); + + for (const auto& window : weak_windows) { if (window) window->CloseImmediately(); }