From f04b46f34e9446417cd5681f511332344679ef30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 25 Sep 2013 17:18:38 +0200 Subject: Don't assume QCoreApplication::applicationName() will never change Tests will typically create multiple QCoreApplications, some of them with different argv[0] than others, so we can't use a static variable to keep the cached application name. Change-Id: Icd97527730558944473a71373326b4a82f1b7cf7 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qcoreapplication.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/corelib/kernel/qcoreapplication.cpp') diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index f3caa1d918..553eaf0820 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -146,15 +146,17 @@ QString QCoreApplicationPrivate::macMenuBarName() #endif QString QCoreApplicationPrivate::appName() const { - static QString applName; + if (applicationName.isNull()) { #ifdef Q_OS_MAC - applName = macMenuBarName(); + applicationName = macMenuBarName(); #endif - if (applName.isEmpty() && argv[0]) { - char *p = strrchr(argv[0], '/'); - applName = QString::fromLocal8Bit(p ? p + 1 : argv[0]); + if (applicationName.isEmpty() && argv[0]) { + char *p = strrchr(argv[0], '/'); + applicationName = QString::fromLocal8Bit(p ? p + 1 : argv[0]); + } } - return applName; + + return applicationName; } #endif -- cgit v1.2.3 From 696060134d10d44175970ffd38618544ecdd9387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 26 Sep 2013 13:20:27 +0200 Subject: Make QCoreApplicationPrivate::appName() thread-safe Change-Id: Iea0d208e3e4721fff8a6667e0df1203a887c29d3 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qcoreapplication.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/kernel/qcoreapplication.cpp') diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 553eaf0820..3ae4e523c8 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -146,6 +146,9 @@ QString QCoreApplicationPrivate::macMenuBarName() #endif QString QCoreApplicationPrivate::appName() const { + static QBasicMutex applicationNameMutex; + QMutexLocker locker(&applicationNameMutex); + if (applicationName.isNull()) { #ifdef Q_OS_MAC applicationName = macMenuBarName(); -- cgit v1.2.3