Browse Source

Make close_stream(fifo.c) return a status code (don't assert on failure) [clang scan-build]

master
Reece H. Dunn 9 years ago
parent
commit
39cd145ba3
1 changed files with 18 additions and 8 deletions
  1. 18
    8
      src/libespeak-ng/fifo.c

+ 18
- 8
src/libespeak-ng/fifo.c View File

return a_start_is_required; return a_start_is_required;
} }


static void close_stream()
static espeak_ng_STATUS close_stream()
{ {
// Warning: a wave_close can be already required by // Warning: a wave_close can be already required by
// an external command (espeak_Cancel + fifo_stop), if so: // an external command (espeak_Cancel + fifo_stop), if so:
// my_stop_is_required = 1; // 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; int a_stop_is_required = my_stop_is_required;
if (!a_stop_is_required) if (!a_stop_is_required)
my_command_is_running = 1; my_command_is_running = 1;
a_status = pthread_mutex_unlock(&my_mutex);

status = pthread_mutex_unlock(&my_mutex);


if (!a_stop_is_required) { if (!a_stop_is_required) {
wave_close(NULL); wave_close(NULL);


int a_status = pthread_mutex_lock(&my_mutex); 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_stop_is_required = my_stop_is_required;

a_status = pthread_mutex_unlock(&my_mutex); a_status = pthread_mutex_unlock(&my_mutex);
if (status == ENS_OK)
status = a_status;


if (a_stop_is_required) { if (a_stop_is_required) {
// acknowledge the stop request // 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) static void *say_thread(void *p)

Loading…
Cancel
Save