Fix JNI leak in Android_GetInputDeviceDebugString, affecting TouchScreenTest

This commit is contained in:
Henrik Rydgård committed 2022-12-22 10:35:34 +01:00
1 parent a3bbaeb31d
commit fe0f19fa31
1 file changed
+8 -5
+8 -5
View File
@@ -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;
}