diff options
author | Volker Hilsheimer <[email protected]> | 2023-10-04 17:54:46 +0200 |
---|---|---|
committer | Volker Hilsheimer <[email protected]> | 2023-10-11 19:32:15 +0200 |
commit | 7d3417fbfcbfc46061609a842768a0111c5a15a2 (patch) | |
tree | 0987378a08e9eed8c9fd2e6955e201c57b7253b8 | |
parent | a20a6ae7ea4f8dad324308ee6e5a41f0318cf29b (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.cpp | 11 |
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); |