From fe0f19fa31b88ae618d0301e1ea2b60f1820db4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 22 Dec 2022 10:35:34 +0100 Subject: [PATCH] Fix JNI leak in Android_GetInputDeviceDebugString, affecting TouchScreenTest --- android/jni/app-android.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp index 2bd7f8c236..61d9567157 100644 --- a/android/jni/app-android.cpp +++ b/android/jni/app-android.cpp @@ -506,16 +506,19 @@ std::string Android_GetInputDeviceDebugString() { return "(N/A)"; } auto env = getEnv(); - jstring param = env->NewStringUTF("InputDevice"); - jstring str = (jstring)env->CallObjectMethod(nativeActivity, getDebugString, param); - if (!str) { + jstring jparam = env->NewStringUTF("InputDevice"); + jstring jstr = (jstring)env->CallObjectMethod(nativeActivity, getDebugString, jparam); + if (!jstr) { + env->DeleteLocalRef(jparam); return "(N/A)"; } - const char *charArray = env->GetStringUTFChars(str, 0); + const char *charArray = env->GetStringUTFChars(jstr, 0); std::string retVal = charArray; - env->DeleteLocalRef(str); + env->ReleaseStringUTFChars(jstr, charArray); + env->DeleteLocalRef(jstr); + env->DeleteLocalRef(jparam); return retVal; }