From ec67ea9c1e51f21e2e04535bfca9de95a05ca488 Mon Sep 17 00:00:00 2001 From: Mariusz Grzegorczyk Date: Tue, 3 Sep 2013 12:44:27 +0900 Subject: [PATCH] ecore: fix segfault while adding new local or global data to thread. --- src/lib/ecore/ecore_thread.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lib/ecore/ecore_thread.c b/src/lib/ecore/ecore_thread.c index 255aa21ce4..ee13c45043 100644 --- a/src/lib/ecore/ecore_thread.c +++ b/src/lib/ecore/ecore_thread.c @@ -1135,9 +1135,14 @@ ecore_thread_local_data_set(Ecore_Thread *thread, r = eina_hash_set(worker->hash, key, d); CDB(worker->cond); - ret = r->data; - free(r); - return ret; + + if (r) + { + ret = r->data; + free(r); + return ret; + } + return NULL; } EAPI void * @@ -1246,9 +1251,13 @@ ecore_thread_global_data_set(const char *key, LRWKU(_ecore_thread_global_hash_lock); CDB(_ecore_thread_global_hash_cond); - ret = r->data; - free(r); - return ret; + if (r) + { + ret = r->data; + free(r); + return ret; + } + return NULL; } EAPI void *