diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2024-02-27 17:57:05 +0100 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2024-02-28 14:02:43 +0000 |
commit | bdb2f20154c1fa1f0962a46a22afdee453a2db1e (patch) | |
tree | 4ee59b1ad2b91136064b9b278d173cfc4c78d013 | |
parent | b42f174cd5be2014ae74453ab2d09742cc83fc36 (diff) |
Fix the qtpath issue with lto enabled
Move qtconfManualPath pointer to the unnamed namespace, so it's never
exported. Add the static setQtconfManualPath method that sets the
pointer at runtime.
Fixes: QTBUG-122739
Pick-to: 6.5 6.6 6.7
Change-Id: Icfc631f9680ad5f484920b0fdf3e408b7657c108
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | qmake/option.cpp | 2 | ||||
-rw-r--r-- | src/corelib/global/qlibraryinfo.cpp | 15 | ||||
-rw-r--r-- | src/corelib/global/qlibraryinfo_p.h | 2 | ||||
-rw-r--r-- | src/tools/qtpaths/qtpaths.cpp | 2 |
4 files changed, 14 insertions, 7 deletions
diff --git a/qmake/option.cpp b/qmake/option.cpp index 584161818f..0e2d199232 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -188,7 +188,7 @@ Option::parseCommandLine(QStringList &args, QMakeCmdLineParserState &state) return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR; } if (!globals->qtconf.isEmpty()) - QLibraryInfoPrivate::qtconfManualPath = &globals->qtconf; + QLibraryInfoPrivate::setQtconfManualPath(&globals->qtconf); if (cmdRet == QMakeGlobals::ArgumentsOk) break; Q_ASSERT(cmdRet == QMakeGlobals::ArgumentUnknown); diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index ab49835601..92729b06f1 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -87,10 +87,19 @@ void QLibrarySettings::load() } } +namespace { +const QString *qtconfManualPath = nullptr; +} + +void QLibraryInfoPrivate::setQtconfManualPath(const QString *path) +{ + qtconfManualPath = path; +} + static QSettings *findConfiguration() { - if (QLibraryInfoPrivate::qtconfManualPath) - return new QSettings(*QLibraryInfoPrivate::qtconfManualPath, QSettings::IniFormat); + if (qtconfManualPath) + return new QSettings(*qtconfManualPath, QSettings::IniFormat); QString qtconfig = QStringLiteral(":/qt/etc/qt.conf"); if (QFile::exists(qtconfig)) @@ -122,8 +131,6 @@ static QSettings *findConfiguration() return nullptr; //no luck } -const QString *QLibraryInfoPrivate::qtconfManualPath = nullptr; - QSettings *QLibraryInfoPrivate::configuration() { QLibrarySettings *ls = qt_library_settings(); diff --git a/src/corelib/global/qlibraryinfo_p.h b/src/corelib/global/qlibraryinfo_p.h index d3c458290b..4b471b932e 100644 --- a/src/corelib/global/qlibraryinfo_p.h +++ b/src/corelib/global/qlibraryinfo_p.h @@ -32,7 +32,7 @@ public: #if QT_CONFIG(settings) static QSettings *configuration(); static void reload(); - static const QString *qtconfManualPath; + static void setQtconfManualPath(const QString *qtconfManualPath); #endif struct LocationInfo diff --git a/src/tools/qtpaths/qtpaths.cpp b/src/tools/qtpaths/qtpaths.cpp index 950f3ed28a..3ad1ca9b25 100644 --- a/src/tools/qtpaths/qtpaths.cpp +++ b/src/tools/qtpaths/qtpaths.cpp @@ -224,7 +224,7 @@ int main(int argc, char **argv) #if QT_CONFIG(settings) if (parser.isSet(qtconf)) { qtconfManualPath = parser.value(qtconf); - QLibraryInfoPrivate::qtconfManualPath = &qtconfManualPath; + QLibraryInfoPrivate::setQtconfManualPath(&qtconfManualPath); } #endif |