From 7ec13c55581b32c8001eb2f6403d17029a278016 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 8 May 2013 15:50:57 +0100 Subject: [PATCH] The nat object may be null in nativeDestroy. --- android/jni/jni/eSpeakService.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/android/jni/jni/eSpeakService.cpp b/android/jni/jni/eSpeakService.cpp index 20dedd98..2c54973e 100644 --- a/android/jni/jni/eSpeakService.cpp +++ b/android/jni/jni/eSpeakService.cpp @@ -127,7 +127,7 @@ JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeClassInit( JNIEXPORT jboolean JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeCreate( JNIEnv *env, jobject object, jstring path) { - if (DEBUG) LOGV("%s", __FUNCTION__); + if (DEBUG) LOGV("%s [env=%p, object=%p]", __FUNCTION__, env, object); native_data_t *nat = new native_data_t; if (nat == NULL) { @@ -151,12 +151,15 @@ JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeCreate( JNIEXPORT jboolean JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeDestroy( JNIEnv *env, jobject object) { - if (DEBUG) LOGV("%s", __FUNCTION__); + if (DEBUG) LOGV("%s [env=%p, object=%p]", __FUNCTION__, env, object); + native_data_t *nat = getNativeData(env, object); - - env->DeleteWeakGlobalRef(nat->object); - - delete nat; + if (nat) { + env->DeleteWeakGlobalRef(nat->object); + delete nat; + } else { + env->DeleteWeakGlobalRef(object); + } return JNI_TRUE; }