From a13570c17c97bb9407c24bcf78ab28eaa4541ad9 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Fri, 6 May 2016 11:06:56 +0900 Subject: [PATCH] ecore timer - fuix up segv storm that has crept in with frees freeing already freed data, not clearing up pointers to freed data once freed etc. etc. etc. - segv land. fix that up so we can use efl again. :( --- src/lib/ecore/ecore_timer.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index 54cf773..1b69676 100644 --- a/src/lib/ecore/ecore_timer.c +++ b/src/lib/ecore/ecore_timer.c @@ -157,8 +157,14 @@ _ecore_timer_legacy_tick(void *data, const Eo_Event *event) if (!_ecore_call_task_cb(legacy->func, (void*)legacy->data)) { - eo_del(event->obj); - free(legacy); + if (eo_key_data_get(event->obj, "_legacy")) + { + eo_key_del(event->obj, "_legacy"); + eo_event_callback_del(event->obj, EFL_TIMER_EVENT_TICK, + _ecore_timer_legacy_tick, legacy), + free(legacy); + eo_del(event->obj); + } } return EO_CALLBACK_CONTINUE; @@ -219,8 +225,10 @@ ecore_timer_del(Ecore_Timer *timer) legacy = eo_key_data_get(timer, "_legacy"); data = (void*) legacy->data; - free(legacy); eo_key_del(timer, "_legacy"); + eo_event_callback_del(timer, EFL_TIMER_EVENT_TICK, + _ecore_timer_legacy_tick, legacy), + free(legacy); eo_del(timer); return data; -- 2.7.4