eina: fix promise scheduler lookup to find it when given a resolved chain of future.
authorCedric BAIL <cedric@osg.samsung.com>
Mon, 12 Mar 2018 16:43:44 +0000 (09:43 -0700)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:10:54 +0000 (20:10 +0900)
T6738

src/lib/eina/eina_promise.c

index 93e091b..5dac1c8 100644 (file)
@@ -663,9 +663,15 @@ _dummy_cancel(void *data EINA_UNUSED, const Eina_Promise *dead_ptr EINA_UNUSED)
 static Eina_Future_Scheduler *
 _scheduler_get(Eina_Future *f)
 {
-   for (; f->prev != NULL; f = f->prev);
-   assert(f->promise != NULL);
-   return f->promise->scheduler;
+   do
+     {
+        if (f->promise) return f->promise->scheduler;
+        else if (f->scheduled_entry) return f->scheduled_entry->scheduler;
+       f = f->prev;
+     }
+   while (f);
+   assert(EINA_FALSE && "no scheduler for future!");
+   return NULL;
 }
 
 EAPI Eina_Value