diff options
author | Shinwoo Kim <cinoo.kim@samsung.com> | 2015-11-10 13:45:37 -0800 |
---|---|---|
committer | Cedric BAIL <cedric@osg.samsung.com> | 2015-11-11 10:40:17 -0800 |
commit | 354e5f0d20cda15d9043b90bb44a25392a9b78e2 (patch) | |
tree | a7e5000f262747d464a964072cd6c69a233c0b25 | |
parent | f61ba2bfce204c59cfd70e5d7410034d3ac4f784 (diff) | |
download | efl-354e5f0d20cda15d9043b90bb44a25392a9b78e2.tar.gz |
ecore: thread - need to null check of function pointer
Summary: you can meet a segmentation fault without this patch
Test Plan:
please use the following snippet
Ecore_Thread *th;
th = ecore_thread_feedback_run(_heavy_cb, _notify_cb, NULL, NULL, obj, EINA_TRUE);
ecore_thread_wait(th, 1.0);
Reviewers: raster, Hermet, jaehwan, woohyun, cedric
Reviewed By: cedric
Subscribers: seoz
Differential Revision: https://phab.enlightenment.org/D3315
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
-rw-r--r-- | src/lib/ecore/ecore_thread.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/ecore/ecore_thread.c b/src/lib/ecore/ecore_thread.c index 7266c09f43..7b88cf2182 100644 --- a/src/lib/ecore/ecore_thread.c +++ b/src/lib/ecore/ecore_thread.c @@ -760,7 +760,7 @@ _ecore_thread_wait_cancel(void *data, Ecore_Thread *thread) Ecore_Pthread_Worker *worker = (Ecore_Pthread_Worker*) thread; Ecore_Thread_Waiter *waiter = data; - waiter->func_cancel((void*) waiter->data, thread); + if (waiter->func_cancel) waiter->func_cancel((void*) waiter->data, thread); _ecore_thread_wait_reset(waiter, worker); } @@ -770,7 +770,7 @@ _ecore_thread_wait_end(void *data, Ecore_Thread *thread) Ecore_Pthread_Worker *worker = (Ecore_Pthread_Worker*) thread; Ecore_Thread_Waiter *waiter = data; - waiter->func_end((void*) waiter->data, thread); + if (waiter->func_end) waiter->func_end((void*) waiter->data, thread); _ecore_thread_wait_reset(waiter, worker); } |