From c9986f871daad3edcd3c3c55ba014277cdb78682 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 10 Apr 2015 23:20:48 +0200 Subject: [PATCH] Cleanup rarch_main_data_thread_init --- runloop_data.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index 14f7a0ca74..76d0091e68 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -943,15 +943,26 @@ static void rarch_main_data_thread_init(void) data_runloop->overlay_lock = slock_new(); data_runloop->cond = scond_new(); - if (!(data_runloop->thread = sthread_create(data_thread_loop, data_runloop))) - { - data_runloop->thread = NULL; - return; - } + data_runloop->thread = sthread_create(data_thread_loop, data_runloop); + + if (!data_runloop->thread) + goto error; data_runloop->thread_inited = true; data_runloop->alive = true; data_runloop->thread_code = THREAD_CODE_ALIVE; + + return; + +error: + slock_free(data_runloop->lock); + slock_free(data_runloop->cond_lock); + slock_free(data_runloop->overlay_lock); + scond_free(data_runloop->cond); + + if (data_runloop->thread) + sthread_join(data_runloop->thread); + data_runloop->thread = NULL; } #endif