Don't crash during QApplication construction
authorBradley T. Hughes <bradley.hughes@nokia.com>
Wed, 11 Jan 2012 13:23:05 +0000 (14:23 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 12 Jan 2012 13:38:29 +0000 (14:38 +0100)
The QCoreApplication::init() function calls the virtual
QCoreApplicationPrivate::createEventDispatcher(), which for
QApplication, also creates the plaform integration. Unfortunately, the
Cocoa menubar integration uses qApp before QApplication is constructed,
causing a crash. Circumvent this by using QGuiApplicationPrivate
directly.

Change-Id: Ib36f628641761e70f9e9e39dd23e70e7537a165b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
src/plugins/platforms/cocoa/qcocoahelpers.mm

index f451dcc..45aa90c 100644 (file)
@@ -45,6 +45,7 @@
 
 #include <QtCore>
 #include <QtGui>
+#include <private/qguiapplication_p.h>
 
 QT_BEGIN_NAMESPACE
 
@@ -441,7 +442,7 @@ QString qt_mac_applicationName()
         appName = QCFString::toQString(static_cast<CFStringRef>(string));
 
     if (appName.isEmpty()) {
-        QString arg0 = qApp->arguments().at(0);
+        QString arg0 = QGuiApplicationPrivate::instance()->appName();
         if (arg0.contains("/")) {
             QStringList parts = arg0.split("/");
             appName = parts.at(parts.count() - 1);