devilhorns pushed a commit to branch feature/wayland/multi-output. http://git.enlightenment.org/core/enlightenment.git/commit/?id=747e70a7a88a71c1bc7925896c0a6c4e6723fe2f
commit 747e70a7a88a71c1bc7925896c0a6c4e6723fe2f Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Wed Apr 11 14:37:57 2018 +0900 startup - fix management of timer pointer for startup timeout fixes access of invalid timer pointer value on slow systems. (was being caught with magic/invalid eiod before) @fix --- src/bin/e_startup.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/e_startup.c b/src/bin/e_startup.c index bb2d38136..7369cf388 100644 --- a/src/bin/e_startup.c +++ b/src/bin/e_startup.c @@ -15,7 +15,7 @@ static Eina_Bool _e_startup_time_exceeded(void *data); static E_Order *startup_apps = NULL; static int start_app_pos = -1; static Ecore_Event_Handler *desktop_cache_update_handler = NULL; -static Ecore_Timer *timer; +static Ecore_Timer *timer = NULL; static Eina_Bool desktop_cache_update = EINA_FALSE; static Eina_Bool started = EINA_FALSE; @@ -43,6 +43,7 @@ e_startup_mode_set(E_Startup_Mode mode) ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_BUILD, _e_startup_event_cb, strdup(buf)); + if (timer) ecore_timer_del(timer); timer = ecore_timer_add(5.0, _e_startup_time_exceeded, NULL); e_init_undone(); } @@ -163,7 +164,7 @@ _e_startup_event_cb(void *data, int ev_type EINA_UNUSED, void *ev) char *buf; Efreet_Event_Cache_Update *e; - ecore_timer_del(timer); + if (timer) ecore_timer_del(timer); timer = NULL; e = ev; @@ -191,5 +192,6 @@ _e_startup_time_exceeded(void *data EINA_UNUSED) fprintf(stderr, "E: efreet didn't notify about cache update\n"); _e_startup_error_dialog("E: Efreet did not update cache. " "Please check your Efreet setup"); + timer = NULL; return ECORE_CALLBACK_CANCEL; } --
