From c00ab6f8eaa3cdc9a29dd103c91b2eaf212cac9f Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 1 Feb 2021 17:24:21 +0200 Subject: [PATCH] Fix QJniObject::registerNativeMethods use of global reference registerNativeMethods() should be using the local jclass from findClass() instead of the global reference. Task-number: QTBUG-89633 Change-Id: I469a9a1ecff95ab9948421baa5c88735ba7ad776 Reviewed-by: Alex Blasche --- src/corelib/kernel/qjnienvironment.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/corelib/kernel/qjnienvironment.cpp b/src/corelib/kernel/qjnienvironment.cpp index 04676cc29c7..4e52f33e0c2 100644 --- a/src/corelib/kernel/qjnienvironment.cpp +++ b/src/corelib/kernel/qjnienvironment.cpp @@ -221,14 +221,13 @@ bool QJniEnvironment::registerNativeMethods(const char *className, JNINativeMeth if (!clazz) return false; - jclass gClazz = static_cast(d->jniEnv->NewGlobalRef(clazz)); - - if (d->jniEnv->RegisterNatives(gClazz, methods, size / sizeof(methods[0])) < 0) { + if (d->jniEnv->RegisterNatives(clazz, methods, size / sizeof(methods[0])) < 0) { exceptionCheckAndClear(); + d->jniEnv->DeleteLocalRef(clazz); return false; } - d->jniEnv->DeleteLocalRef(gClazz); + d->jniEnv->DeleteLocalRef(clazz); return true; }