From c7771f6c91b71b6dea00defeeed4d5be0ced850d Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Mon, 15 Jan 2007 22:37:40 +0000 Subject: [PATCH] reduce some if/else complexity --- dmeventd/dmeventd.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/dmeventd/dmeventd.c b/dmeventd/dmeventd.c index 303b589..9098528 100644 --- a/dmeventd/dmeventd.c +++ b/dmeventd/dmeventd.c @@ -1295,14 +1295,15 @@ static void _cleanup_unused_threads(void) _lock_mutex(); while ((l = list_first(&_thread_registry_unused))) { thread = list_item(l, struct thread_status); - if (thread->processing) { - goto out; /* cleanup on the next round */ - } + if (thread->processing) + break; /* cleanup on the next round */ if (thread->status == DM_THREAD_RUNNING) { thread->status = DM_THREAD_SHUTDOWN; - goto out; - } else if (thread->status == DM_THREAD_SHUTDOWN) { + break; + } + + if (thread->status == DM_THREAD_SHUTDOWN) { if (!thread->events) { /* turn codes negative -- should we be returning this? */ ret = _terminate_thread(thread); @@ -1315,22 +1316,26 @@ static void _cleanup_unused_threads(void) strerror(-ret)); stack; } - goto out; - } else { - list_del(l); - syslog(LOG_ERR, - "thread can't be on unused list unless !thread->events"); - thread->status = DM_THREAD_RUNNING; - LINK_THREAD(thread); - } - } else if (thread->status == DM_THREAD_DONE) { + break; + } + + list_del(l); + syslog(LOG_ERR, + "thread can't be on unused list unless !thread->events"); + thread->status = DM_THREAD_RUNNING; + LINK_THREAD(thread); + + continue; + } + + if (thread->status == DM_THREAD_DONE) { list_del(l); pthread_join(thread->thread, NULL); _lib_put(thread->dso_data); _free_thread_status(thread); } } - out: + _unlock_mutex(); } -- 2.43.5