From c24913aec312a6e9a85aafcca4c045c564f7a0c8 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 12 Dec 2012 18:09:11 +0000 Subject: [PATCH] Use a pointer to a stack object for 'silence' instead of allocating memory to avoid a memory leak. --- jni/jni/com_google_espeakengine.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/jni/jni/com_google_espeakengine.cpp b/jni/jni/com_google_espeakengine.cpp index aae8f9e1..162194f8 100644 --- a/jni/jni/com_google_espeakengine.cpp +++ b/jni/jni/com_google_espeakengine.cpp @@ -148,10 +148,9 @@ static int eSpeakCallback(short *wav, int numsamples, espeak_EVENT *events) { int8_t * castedWav = (int8_t *) wav; size_t bufferSize = 0; if (numsamples < 1) { - size_t silenceBufferSize = 2; - int8_t *silence = new int8_t[silenceBufferSize]; // TODO: This will be a small memory leak, but do it this way for now because passing in an empty buffer can cause a crash. - silence[0] = 0; - silence[1] = 0; + int8_t silenceData[] = { 0, 0 }; + size_t silenceBufferSize = sizeof(silenceData)/sizeof(silenceData[0]); + int8_t *silence = silenceData; // Passing in an empty buffer can cause a crash. ttsSynthDoneCBPointer(events->user_data, 22050, TTS_AUDIO_FORMAT_PCM_16_BIT, 1, silence, silenceBufferSize, TTS_SYNTH_DONE); return 1;