From 0f10af0f18e18b3d9843a7aa16a557c192d19178 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:50:48 +1100 Subject: [PATCH] fix: iterator invalidation in AppDb updateApps Was removing from list via take() while iterating through it --- plugin/src/Caelestia/appdb.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugin/src/Caelestia/appdb.cpp b/plugin/src/Caelestia/appdb.cpp index 6952c0e0..5dc4d724 100644 --- a/plugin/src/Caelestia/appdb.cpp +++ b/plugin/src/Caelestia/appdb.cpp @@ -303,11 +303,13 @@ void AppDb::updateApps() { newIds.insert(entry->property("id").toString()); } - for (auto it = m_apps.keyBegin(); it != m_apps.keyEnd(); ++it) { - const auto& id = *it; - if (!newIds.contains(id)) { + for (auto it = m_apps.begin(); it != m_apps.end();) { + if (!newIds.contains(it.key())) { dirty = true; - m_apps.take(id)->deleteLater(); + it.value()->deleteLater(); + it = m_apps.erase(it); + } else { + ++it; } }