From 39cd145ba35ab1899ad8f1e32980f11f65686903 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 6 Jan 2016 19:57:26 +0000 Subject: [PATCH] Make close_stream(fifo.c) return a status code (don't assert on failure) [clang scan-build] --- src/libespeak-ng/fifo.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/libespeak-ng/fifo.c b/src/libespeak-ng/fifo.c index 4f48c37d..d9d5088a 100644 --- a/src/libespeak-ng/fifo.c +++ b/src/libespeak-ng/fifo.c @@ -220,35 +220,45 @@ static int sleep_until_start_request_or_inactivity() return a_start_is_required; } -static void close_stream() +static espeak_ng_STATUS close_stream() { // Warning: a wave_close can be already required by // an external command (espeak_Cancel + fifo_stop), if so: // my_stop_is_required = 1; - int a_status = pthread_mutex_lock(&my_mutex); - assert(!a_status); + espeak_ng_STATUS status = pthread_mutex_lock(&my_mutex); + if (status != ENS_OK) + return status; + int a_stop_is_required = my_stop_is_required; if (!a_stop_is_required) my_command_is_running = 1; - a_status = pthread_mutex_unlock(&my_mutex); + + status = pthread_mutex_unlock(&my_mutex); if (!a_stop_is_required) { wave_close(NULL); int a_status = pthread_mutex_lock(&my_mutex); - assert(!a_status); - my_command_is_running = 0; + if (status == ENS_OK) + status = a_status; + my_command_is_running = 0; a_stop_is_required = my_stop_is_required; + a_status = pthread_mutex_unlock(&my_mutex); + if (status == ENS_OK) + status = a_status; if (a_stop_is_required) { // acknowledge the stop request - int a_status = sem_post(&my_sem_stop_is_acknowledged); - assert(a_status != -1); + a_status = sem_post(&my_sem_stop_is_acknowledged); + if (status == ENS_OK) + status = a_status; } } + + return status; } static void *say_thread(void *p)