From 4f7e0bdc4c18b8d0a1e317ddae2d2caa80b59c8e Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Fri, 28 Aug 2015 19:00:21 +0300 Subject: [PATCH] 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 --- src/plugins/platforms/android/androidjnimain.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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(m_applicationParams[i].constData()); int ret = m_main(m_applicationParams.length(), const_cast(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; }