summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2018-04-11 14:37:57 +0900
committerChris Michael <cp.michael@samsung.com>2018-06-12 08:12:47 -0400
commit747e70a7a88a71c1bc7925896c0a6c4e6723fe2f (patch)
treebecbd67666a2d2698e89351283f4af253be23c27
parent851d32450f31890155182a8cd0b4a9ffc62af8bd (diff)
downloadenlightenment-747e70a7a88a71c1bc7925896c0a6c4e6723fe2f.tar.gz
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
-rw-r--r--src/bin/e_startup.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/bin/e_startup.c b/src/bin/e_startup.c
index bb2d38136b..7369cf388a 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;
}