ecore/timer: fix handling of timer freeze during construction
authorMike Blumenkrantz <zmike@samsung.com>
Wed, 29 May 2019 13:14:56 +0000 (09:14 -0400)
committerWonki Kim <wonki_.kim@samsung.com>
Mon, 3 Jun 2019 06:58:33 +0000 (15:58 +0900)
Summary:
timer has no loop pointer until it is finalized

@fix
Depends on D8918

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8947

src/lib/ecore/ecore_timer.c

index 37280e8..96b1a13 100644 (file)
@@ -321,13 +321,15 @@ ecore_timer_freeze(Ecore_Timer *timer)
 EOLIAN static void
 _efl_loop_timer_efl_object_event_freeze(Eo *obj, Efl_Loop_Timer_Data *timer)
 {
-   double now;
+   double now = 0.0;
 
    efl_event_freeze(efl_super(obj, MY_CLASS));
    // Timer already frozen
    if (timer->frozen) return;
 
-   now = efl_loop_time_get(timer->loop);
+   /* not set if timer is not finalized */
+   if (timer->loop)
+     now = efl_loop_time_get(timer->loop);
    /* only if timer interval has been set */
    if (timer->initialized)
      timer->pending = timer->at - now;