diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-07-04 15:10:17 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-07-04 15:15:48 +0900 |
commit | 3671dd64c6cbf6a8ce3f20c1be143805cf3c9e49 (patch) | |
tree | ac4124f17019d6060cc6479a7a39f244fc2bceed | |
parent | e2d7c11665d8d1eae225e4cce5cb5b388fd86aa7 (diff) | |
download | efl-3671dd64c6cbf6a8ce3f20c1be143805cf3c9e49.tar.gz |
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
-rw-r--r-- | src/lib/ecore/ecore_timer.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index 391c792e4b..2d9e1bcd40 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, |