(MacOS) Fix for startup error on recent mac builds 61/322461/1
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Wed, 9 Apr 2025 09:10:05 +0000 (10:10 +0100)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Wed, 9 Apr 2025 09:13:22 +0000 (10:13 +0100)
Change-Id: I8f78ff9c8ec81a1169f46b89af236e0ff7603dcb

dali/internal/system/macos/callback-manager-mac.mm

index 99a4c1119b235bfcab0e0f01c9e19853ef936636..caa0e0c042ad4eaab9fa33be62750738a2c2903c 100644 (file)
@@ -61,10 +61,10 @@ struct CallbackContainer final : public std::unordered_map<CallbackBase*, bool>
 
   ~CallbackContainer() { Clear(); }
 
-  void RemoveCallback(const_iterator item)
+  const_iterator RemoveCallback(const_iterator item)
   {
     delete item->first;
-    erase(item);
+    return erase(item);
   }
 
   bool RemoveCallback(CallbackBase *callback)
@@ -210,13 +210,16 @@ void CocoaCallbackManager::Impl::IdleEnterObserverCallback(
 {
   auto *pImpl = reinterpret_cast<Impl*>(info);
 
-  for (auto it(cbegin(pImpl->mIdleEntererCallbacks)),
-      e(cend(pImpl->mIdleEntererCallbacks)); it != e; ++it)
+  for (auto it(cbegin(pImpl->mIdleEntererCallbacks));
+       it != cend(pImpl->mIdleEntererCallbacks);)
   {
     if (!pImpl->mIdleEntererCallbacks.Execute(it).value_or(false))
     {
-      pImpl->mIdleEntererCallbacks.RemoveCallback(it);
+      it = pImpl->mIdleEntererCallbacks.RemoveCallback(it);
+      // Skip increment as we've just modified the container
+      continue;
     }
+    it++;
   }
 }