diff --git a/src/libespeak-ng/speech.c b/src/libespeak-ng/speech.c index 322389f6..3427e51c 100644 --- a/src/libespeak-ng/speech.c +++ b/src/libespeak-ng/speech.c @@ -901,6 +901,11 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Terminate(void) FreeVoiceList(); translator = NULL; + if (p_decoder != NULL) { + destroy_text_decoder(p_decoder); + p_decoder = NULL; + } + return ENS_OK; } diff --git a/tests/api.c b/tests/api.c index 4ae0eeaf..84362206 100644 --- a/tests/api.c +++ b/tests/api.c @@ -38,10 +38,12 @@ test_espeak_terminate_without_initialize() assert(event_list == NULL); assert(translator == NULL); + assert(p_decoder == NULL); assert(espeak_Terminate() == EE_OK); assert(event_list == NULL); assert(translator == NULL); + assert(p_decoder == NULL); } void @@ -51,14 +53,17 @@ test_espeak_initialize() assert(event_list == NULL); assert(translator == NULL); + assert(p_decoder == NULL); assert(espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0) == 22050); assert(event_list != NULL); assert(translator == NULL); + assert(p_decoder == NULL); assert(espeak_Terminate() == EE_OK); assert(event_list == NULL); assert(translator == NULL); + assert(p_decoder == NULL); } void @@ -68,21 +73,26 @@ test_espeak_synth() assert(event_list == NULL); assert(translator == NULL); + assert(p_decoder == NULL); assert(espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL, 0, NULL, 0) == 22050); assert(event_list != NULL); assert(translator == NULL); + assert(p_decoder == NULL); const char *test = "One two three."; assert(espeak_Synth(test, strlen(test)+1, 0, POS_CHARACTER, 0, espeakCHARS_AUTO, NULL, NULL) == EE_OK); assert(translator != NULL); + assert(p_decoder != NULL); assert(espeak_Synchronize() == EE_OK); assert(translator != NULL); + assert(p_decoder != NULL); assert(espeak_Terminate() == EE_OK); assert(event_list == NULL); assert(translator == NULL); + assert(p_decoder == NULL); } int