jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3671dd64c6cbf6a8ce3f20c1be143805cf3c9e49

commit 3671dd64c6cbf6a8ce3f20c1be143805cf3c9e49
Author: Jean-Philippe Andre <[email protected]>
Date:   Mon Jul 4 15:10:17 2016 +0900

    ecore: Fix obvious crash with legacy timers
    
    ecore_timer_del() checks a flag "inside_call" that can be
    set before calling the timer cb... but it was never reset
    to 0. So, all legacy timers would keep on ticking forever
    and ever, until they return CANCEL.
    
    Anyway, I find the distinction between eo_del and
    ecore_timer_del very troubling. eo_del() should work
    on a legacy timer. Ping @cedric. Maybe override eo_del()?
    
    Fixes T3898
---
 src/lib/ecore/ecore_timer.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c
index 391c792..2d9e1bc 100644
--- a/src/lib/ecore/ecore_timer.c
+++ b/src/lib/ecore/ecore_timer.c
@@ -168,6 +168,8 @@ _ecore_timer_legacy_tick(void *data, const Eo_Event *event)
    if (!_ecore_call_task_cb(legacy->func, (void*)legacy->data) ||
        legacy->delete_me)
      eo_del(event->object);
+   else
+     legacy->inside_call = 0;
 }
 
 EO_CALLBACKS_ARRAY_DEFINE(legacy_timer,

-- 


Reply via email to