From 0b13d398fe597c9b30beb8207828586718b8a9b0 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Fri, 16 Jan 2026 09:11:12 +0100 Subject: [PATCH] desktop/window: avoid uaf on instant removal of a window ref https://github.com/hyprwm/Hyprland/discussions/12999 --- src/desktop/view/Window.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp index 2559e0c4..7d5087e8 100644 --- a/src/desktop/view/Window.cpp +++ b/src/desktop/view/Window.cpp @@ -2648,15 +2648,15 @@ void CWindow::destroyWindow() { m_xdgSurface.reset(); - if (!m_fadingOut) { - Log::logger->log(Log::DEBUG, "Unmapped {} removed instantly", m_self.lock()); - g_pCompositor->removeWindowFromVectorSafe(m_self.lock()); // most likely X11 unmanaged or sumn - } - m_listeners.unmap.reset(); m_listeners.destroy.reset(); m_listeners.map.reset(); m_listeners.commit.reset(); + + if (!m_fadingOut) { + Log::logger->log(Log::DEBUG, "Unmapped {} removed instantly", m_self.lock()); + g_pCompositor->removeWindowFromVectorSafe(m_self.lock()); // most likely X11 unmanaged or sumn + } } void CWindow::activateX11() {