summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <[email protected]>2023-10-04 17:54:46 +0200
committerVolker Hilsheimer <[email protected]>2023-10-11 19:32:15 +0200
commit7d3417fbfcbfc46061609a842768a0111c5a15a2 (patch)
tree0987378a08e9eed8c9fd2e6955e201c57b7253b8
parenta20a6ae7ea4f8dad324308ee6e5a41f0318cf29b (diff)
JNI: Warn if classes are resolved with wrong syntax
Amends 39294317e0, after which class names have to be slash-separated. Change-Id: I5b8415b711f4deed9b6134eccd3232f299b1ef4d Reviewed-by: Assam Boudjelthia <[email protected]> Reviewed-by: Juha Vuolle <[email protected]>
-rw-r--r--src/corelib/kernel/qjniobject.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/corelib/kernel/qjniobject.cpp b/src/corelib/kernel/qjniobject.cpp
index 6bfd4ac5968..dfb1ebfdce0 100644
--- a/src/corelib/kernel/qjniobject.cpp
+++ b/src/corelib/kernel/qjniobject.cpp
@@ -360,7 +360,14 @@ static QJniObject getCleanJniObject(jobject object)
jclass QtAndroidPrivate::findClass(const char *className, JNIEnv *env)
{
Q_ASSERT(env);
- const QByteArray classNameArray(className);
+ QByteArray classNameArray(className);
+#ifdef QT_DEBUG
+ if (classNameArray.contains('.')) {
+ qWarning("QtAndroidPrivate::findClass: className '%s' should use slash separators!",
+ className);
+ }
+#endif
+ classNameArray.replace('.', '/');
jclass clazz = getCachedClass(classNameArray);
if (clazz)
return clazz;
@@ -374,7 +381,7 @@ jclass QtAndroidPrivate::findClass(const char *className, JNIEnv *env)
// JNIEnv::FindClass wants "a fully-qualified class name or an array type signature"
// which is a slash-separated class name.
- jclass localClazz = env->FindClass(className);
+ jclass localClazz = env->FindClass(classNameArray.constData());
if (localClazz) {
clazz = static_cast<jclass>(env->NewGlobalRef(localClazz));
env->DeleteLocalRef(localClazz);