From aab33030a5ed163e4a8d3e6222b414b79334f32a Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Fri, 4 Mar 2022 15:19:08 +0200 Subject: Android: terminate argv passed to main() with nullptr the char array of argv passed to the app's main() function need to be null terminated [*] and argv to be **char. [*] http://eel.is/c++draft/basic.start.main#2 Fixes: QTBUG-101028 Change-Id: I6e3a685f092a92a94f60d166357b75d2538af74c Reviewed-by: Ville Voutilainen (cherry picked from commit daf7f07c1bb00028d7bce6b030f5ade8c4d0da59) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/android/androidjnimain.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index 6cb9d8fe7e..aa24c7d775 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -548,12 +548,14 @@ static void startQtApplication(JNIEnv */*env*/, jclass /*clazz*/) if (QFile{QStringLiteral("assets:/android_rcc_bundle.rcc")}.exists()) QResource::registerResource(QStringLiteral("assets:/android_rcc_bundle.rcc")); - QVarLengthArray params(m_applicationParams.size()); - for (int i = 0; i < m_applicationParams.size(); i++) - params[i] = static_cast(m_applicationParams[i].constData()); + const int argc = m_applicationParams.size(); + QVarLengthArray argv(argc + 1); + for (int i = 0; i < argc; i++) + argv[i] = m_applicationParams[i].data(); + argv[argc] = nullptr; startQtAndroidPluginCalled.fetchAndAddRelease(1); - int ret = m_main(m_applicationParams.length(), const_cast(params.data())); + int ret = m_main(argc, argv.data()); if (m_mainLibraryHnd) { int res = dlclose(m_mainLibraryHnd); -- cgit v1.2.3