QJniObject: fix binary compatibility breakage

Amends 601dbd64993fcbbb2ce6aaa95ef153ffd4f852b9, which changed the
signature of the private callVoidMethodV function. However, that
function got called in a public template member function, so callsites
depended on the private function to be present. By changing the function
signature, we broke binary compatibility.

Bring the original function back and implement the variadic overload
through it.

Fixes: QTBUG-109428
Change-Id: Ie2297e120fbeb146089c0fbe8f91f8b8d3c79713
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit f2b49789b2f9f9145d318a00868d2f054052aee4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Volker Hilsheimer 2022-12-15 13:06:52 +01:00 committed by Qt Cherry-pick Bot
parent 3801ac5db5
commit cdbc83eab8
2 changed files with 8 additions and 1 deletions

View File

@ -393,10 +393,15 @@ void QJniObject::callVoidMethodV(JNIEnv *env, jmethodID id, ...) const
{
va_list args;
va_start(args, id);
env->CallVoidMethodV(d->m_jobject, id, args);
callVoidMethodV(env, id, args);
va_end(args);
}
void QJniObject::callVoidMethodV(JNIEnv *env, jmethodID id, va_list args) const
{
env->CallVoidMethodV(d->m_jobject, id, args);
}
jmethodID QJniObject::getCachedMethodID(JNIEnv *env,
jclass clazz,
const QByteArray &className,

View File

@ -434,6 +434,8 @@ private:
const char *signature, bool isStatic = false);
void callVoidMethodV(JNIEnv *env, jmethodID id, ...) const;
// ### Qt 7: merge into ... overload
void callVoidMethodV(JNIEnv *env, jmethodID id, va_list args) const;
QJniObject callObjectMethodV(const char *methodName, const char *signature,
va_list args) const;