From 06e6c6021e4765f3603bb5522b9d9f1ec0f66390 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Mon, 12 Dec 2022 14:18:43 +0000 Subject: [PATCH] fix memory read-after-free in master layout --- src/layout/MasterLayout.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index 19b675f4..19f22fb5 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -152,11 +152,13 @@ void CHyprMasterLayout::onWindowRemovedTiling(CWindow* pWindow) { } } + const auto WORKSPACEID = PNODE->workspaceID; + m_lMasterNodesData.remove(*PNODE); - if (getMastersOnWorkspace(PNODE->workspaceID) == getNodesOnWorkspace(PNODE->workspaceID) && MASTERSLEFT > 1) { + if (getMastersOnWorkspace(WORKSPACEID) == getNodesOnWorkspace(WORKSPACEID) && MASTERSLEFT > 1) { for (auto it = m_lMasterNodesData.rbegin(); it != m_lMasterNodesData.rend(); it++) { - if (it->workspaceID == PNODE->workspaceID) { + if (it->workspaceID == WORKSPACEID) { it->isMaster = false; break; }