diff options
| author | Vaxry <vaxry@vaxry.net> | 2026-01-16 09:11:12 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2026-01-16 09:11:21 +0100 |
| commit | 0b13d398fe597c9b30beb8207828586718b8a9b0 (patch) | |
| tree | 0c122fdbbbd3b3f7c429b4a9d504f35ba69b6923 | |
| parent | ac9df44788492fd1d12da8ec0fbbf691386c45a4 (diff) | |
desktop/window: avoid uaf on instant removal of a window
ref https://github.com/hyprwm/Hyprland/discussions/12999
| -rw-r--r-- | src/desktop/view/Window.cpp | 10 |
1 files 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() { |
