diff options
author | BogDan Vatra <bogdan@kde.org> | 2015-08-28 19:00:21 +0300 |
---|---|---|
committer | BogDan Vatra <bogdan@kdab.com> | 2015-10-15 09:49:39 +0000 |
commit | 4f7e0bdc4c18b8d0a1e317ddae2d2caa80b59c8e (patch) | |
tree | 05b8d6bae61f14f960a27a133583ab34190ce786 /src/plugins/platforms/android/androidjnimain.cpp | |
parent | 0a00782608c7dcc15f58f514bb75bbf0d646abed (diff) |
Android: Ensure all global objects are destructed
Android doesn't automatically trigger global objects destruction, so we need to do it ourselves.
Test case:
struct TestGlobal {
~TestGlobal() { qDebug() << " ~TestGlobal";}
} global;
int main() {
return 0;
}
Change-Id: I32507c1cffebafc9841e9707a8f6711dcbd36281
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/android/androidjnimain.cpp')
-rw-r--r-- | src/plugins/platforms/android/androidjnimain.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index c7c82e255c..99cb58830c 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -432,7 +432,6 @@ static void *startMainMethod(void */*data*/) params[i] = static_cast<const char *>(m_applicationParams[i].constData()); int ret = m_main(m_applicationParams.length(), const_cast<char **>(params.data())); - Q_UNUSED(ret); if (m_mainLibraryHnd) { int res = dlclose(m_mainLibraryHnd); @@ -448,6 +447,8 @@ static void *startMainMethod(void */*data*/) if (vm != 0) vm->DetachCurrentThread(); + // We must call exit() to ensure that all global objects will be destructed + exit(ret); return 0; } |