From dced9f58fd1bdddf76b3d5b9b30fc7b51f7f5cd9 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 21 May 2017 12:07:15 +0100 Subject: [PATCH] Clean up the decoder memory in espeak_Terminate. --- src/libespeak-ng/speech.c | 5 +++++ tests/api.c | 10 ++++++++++ 2 files changed, 15 insertions(+) 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