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 Pick-to: 6.2 6.3 5.15 Change-Id: I6e3a685f092a92a94f60d166357b75d2538af74c Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
This commit is contained in:
parent
f0333355dd
commit
daf7f07c1b
@ -548,12 +548,14 @@ static void startQtApplication(JNIEnv */*env*/, jclass /*clazz*/)
|
|||||||
if (QFile{QStringLiteral("assets:/android_rcc_bundle.rcc")}.exists())
|
if (QFile{QStringLiteral("assets:/android_rcc_bundle.rcc")}.exists())
|
||||||
QResource::registerResource(QStringLiteral("assets:/android_rcc_bundle.rcc"));
|
QResource::registerResource(QStringLiteral("assets:/android_rcc_bundle.rcc"));
|
||||||
|
|
||||||
QVarLengthArray<const char *> params(m_applicationParams.size());
|
const int argc = m_applicationParams.size();
|
||||||
for (int i = 0; i < m_applicationParams.size(); i++)
|
QVarLengthArray<char *> argv(argc + 1);
|
||||||
params[i] = static_cast<const char *>(m_applicationParams[i].constData());
|
for (int i = 0; i < argc; i++)
|
||||||
|
argv[i] = m_applicationParams[i].data();
|
||||||
|
argv[argc] = nullptr;
|
||||||
|
|
||||||
startQtAndroidPluginCalled.fetchAndAddRelease(1);
|
startQtAndroidPluginCalled.fetchAndAddRelease(1);
|
||||||
int ret = m_main(m_applicationParams.length(), const_cast<char **>(params.data()));
|
int ret = m_main(argc, argv.data());
|
||||||
|
|
||||||
if (m_mainLibraryHnd) {
|
if (m_mainLibraryHnd) {
|
||||||
int res = dlclose(m_mainLibraryHnd);
|
int res = dlclose(m_mainLibraryHnd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user