[4.0] Use correct method to delete CallbackData of container in loop. 77/166777/5
authoradun <xiaohui.fang@samsung.com>
Fri, 12 Jan 2018 08:44:12 +0000 (16:44 +0800)
committerdongsug song <dongsug.song@samsung.com>
Fri, 12 Jan 2018 04:07:18 +0000 (04:07 +0000)
Change-Id: I1cd95b3e93d19f57444bea113ba81e99e5d76f12

adaptors/common/event-loop/ecore/ecore-callback-manager.cpp [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index c130bda..8c7dfb6
@@ -140,20 +140,21 @@ bool EcoreCallbackManager::AddIdleCallback( CallbackBase* callback )
 
 void EcoreCallbackManager::RemoveIdleCallback( CallbackBase* callback )
 {
-  for( CallbackList::iterator it = mCallbackContainer.begin(),
-         endIt = mCallbackContainer.end();
-       it != endIt;
-       ++it )
+  CallbackList::iterator it = mCallbackContainer.begin();
+
+  while( mCallbackContainer.end() != it )
   {
     CallbackData* data = *it;
 
     if( data->mCallback == callback )
     {
-      // remove callback data from the container.
-      CallbackBase::Execute( *data->mRemoveFromContainerFunction, data );
-
+      it = mCallbackContainer.erase( it );
       ecore_idler_del( data->mIdler );
     }
+    else
+    {
+      it++;
+    }
   }
 }