diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index f5cda7b6e2..c600920817 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -1729,18 +1729,24 @@ static bool Android_JNI_ExceptionOccurred(bool silent) exceptionName = (jstring)(*env)->CallObjectMethod(env, exceptionClass, mid); exceptionNameUTF8 = (*env)->GetStringUTFChars(env, exceptionName, 0); + (*env)->DeleteLocalRef(env, classClass); + mid = (*env)->GetMethodID(env, exceptionClass, "getMessage", "()Ljava/lang/String;"); exceptionMessage = (jstring)(*env)->CallObjectMethod(env, exception, mid); + (*env)->DeleteLocalRef(env, exceptionClass); + if (exceptionMessage != NULL) { const char *exceptionMessageUTF8 = (*env)->GetStringUTFChars(env, exceptionMessage, 0); SDL_SetError("%s: %s", exceptionNameUTF8, exceptionMessageUTF8); (*env)->ReleaseStringUTFChars(env, exceptionMessage, exceptionMessageUTF8); + (*env)->DeleteLocalRef(env, exceptionMessage); } else { SDL_SetError("%s", exceptionNameUTF8); } (*env)->ReleaseStringUTFChars(env, exceptionName, exceptionNameUTF8); + (*env)->DeleteLocalRef(env, exceptionName); } return true; @@ -2768,6 +2774,7 @@ bool Android_JNI_OpenFileDialog( if (filters) { jclass stringClass = (*env)->FindClass(env, "java/lang/String"); filtersArray = (*env)->NewObjectArray(env, nfilters, stringClass, NULL); + (*env)->DeleteLocalRef(env, stringClass); // Convert to string for (int i = 0; i < nfilters; i++) {