diff --git a/src/libespeak-ng/fifo.c b/src/libespeak-ng/fifo.c index 475703f6..a01104c6 100644 --- a/src/libespeak-ng/fifo.c +++ b/src/libespeak-ng/fifo.c @@ -95,8 +95,10 @@ espeak_ng_STATUS fifo_add_command(t_espeak_command *the_command) if ((status = pthread_mutex_lock(&my_mutex)) != ENS_OK) return status; - if ((status = push(the_command)) != ENS_OK) + if ((status = push(the_command)) != ENS_OK) { + pthread_mutex_unlock(&my_mutex); return status; + } if ((status = pthread_mutex_unlock(&my_mutex)) != ENS_OK) return status; @@ -124,11 +126,15 @@ espeak_ng_STATUS fifo_add_commands(t_espeak_command *command1, t_espeak_command if (node_counter+1 >= MAX_NODE_COUNTER) return ENS_FIFO_BUFFER_FULL; - if ((status = push(command1)) != ENS_OK) + if ((status = push(command1)) != ENS_OK) { + pthread_mutex_unlock(&my_mutex); return status; + } - if ((status = push(command2)) != ENS_OK) + if ((status = push(command2)) != ENS_OK) { + pthread_mutex_unlock(&my_mutex); return status; + } if ((status = pthread_mutex_unlock(&my_mutex)) != ENS_OK) return status;