From d9c5fdf5d50dca0749bbcc0015c8f5285d384336 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 30 Jan 2021 14:02:06 +0100 Subject: [PATCH] LibGUI: Handle Window::hide() during Application teardown better If a window is being torn down during app shutdown, the global application pointer may be nulled out already. So let's handle that case gracefully in Window::hide(). --- Userland/Libraries/LibGUI/Window.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Userland/Libraries/LibGUI/Window.cpp b/Userland/Libraries/LibGUI/Window.cpp index a3c3d855f8..c2e684c237 100644 --- a/Userland/Libraries/LibGUI/Window.cpp +++ b/Userland/Libraries/LibGUI/Window.cpp @@ -196,15 +196,17 @@ void Window::hide() } } - bool app_has_visible_windows = false; - for (auto& window : *all_windows) { - if (window->is_visible()) { - app_has_visible_windows = true; - break; + if (auto* app = Application::the()) { + bool app_has_visible_windows = false; + for (auto& window : *all_windows) { + if (window->is_visible()) { + app_has_visible_windows = true; + break; + } } + if (!app_has_visible_windows) + app->did_delete_last_window({}); } - if (!app_has_visible_windows) - Application::the()->did_delete_last_window({}); } void Window::set_title(const StringView& title)