From e72e30ba52702ae61e8cb1045d3bab4ea623fe7f Mon Sep 17 00:00:00 2001 From: Beqa Gozalishvili Date: Wed, 2 Nov 2022 12:56:32 +0400 Subject: [PATCH] Fix crash for some of devices. --- android/jni/jni/eSpeakService.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/android/jni/jni/eSpeakService.c b/android/jni/jni/eSpeakService.c index 43905cd1..02bd5bdd 100644 --- a/android/jni/jni/eSpeakService.c +++ b/android/jni/jni/eSpeakService.c @@ -195,14 +195,18 @@ JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeGetAvailableVoices( sprintf(gender_buf, "%d", v->gender); sprintf(age_buf, "%d", v->age); - (*env)->SetObjectArrayElement( - env, voicesArray, voicesIndex++, (*env)->NewStringUTF(env, lang_name)); - (*env)->SetObjectArrayElement( - env, voicesArray, voicesIndex++, (*env)->NewStringUTF(env, identifier)); - (*env)->SetObjectArrayElement( - env, voicesArray, voicesIndex++, (*env)->NewStringUTF(env, gender_buf)); - (*env)->SetObjectArrayElement( - env, voicesArray, voicesIndex++, (*env)->NewStringUTF(env, age_buf)); + jstring lang = (*env)->NewStringUTF(env, lang_name); + (*env)->SetObjectArrayElement(env, voicesArray, voicesIndex++, lang); + (*env)->DeleteLocalRef(env, lang); + jstring ident = (*env)->NewStringUTF(env, identifier); + (*env)->SetObjectArrayElement(env, voicesArray, voicesIndex++, ident); + (*env)->DeleteLocalRef(env, ident); + jstring gender = (*env)->NewStringUTF(env, gender_buf); + (*env)->SetObjectArrayElement(env, voicesArray, voicesIndex++, gender); + (*env)->DeleteLocalRef(env, gender); + jstring age = (*env)->NewStringUTF(env, age_buf); + (*env)->SetObjectArrayElement(env, voicesArray, voicesIndex++, age); + (*env)->DeleteLocalRef(env, age); } return voicesArray;