From b9ddb4bb26275115e9c9ff03b3d87c6e2fd96c45 Mon Sep 17 00:00:00 2001 From: matjam Date: Mon, 9 Mar 2026 14:45:21 -0700 Subject: layout: fix crash on monitor reconnect due to stale workspace state Guard against null/expired workspace and monitor pointers during layout recalculation triggered by arrangeMonitors after sleep/wake. --- src/layout/space/Space.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/layout/space') diff --git a/src/layout/space/Space.cpp b/src/layout/space/Space.cpp index db3925f6..a02ba517 100644 --- a/src/layout/space/Space.cpp +++ b/src/layout/space/Space.cpp @@ -21,8 +21,16 @@ CSpace::CSpace(PHLWORKSPACE parent) : m_parent(parent) { // NOLINTNEXTLINE m_geomUpdateCallback = Event::bus()->m_events.monitor.layoutChanged.listen([this] { + // During monitor disconnect/reconnect (e.g. sleep/wake), some workspaces + // may have stale or null monitors. Guard against that to avoid crashing + // when recalculating layout for workspaces mid-migration. + if (!m_parent || !m_parent->m_monitor) + return; + recheckWorkArea(); - m_algorithm->recalculate(); + + if (m_algorithm) + m_algorithm->recalculate(); }); } -- cgit v1.2.3