From e8605372bab15d0fd7cd1cdb7c9c010371ef8726 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 11 Dec 2024 15:13:13 +0100 Subject: [PATCH] qsettings.cpp: really un-break -unity-build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The use of Space was still ambiguous. Says GCC 14: qsettings.cpp: In static member function ‘static bool QConfFileSettingsPrivate::readIniLine(QByteArrayView, qsizetype&, qsizetype&, qsizetype&, qsizetype&)’: qsettings.cpp:1564:82: error: reference to ‘Space’ is ambiguous 1564 | while (lineStart < dataLen && (charTraits[uint(uchar(data.at(lineStart)))] & Space)) | ^~~~~ In file included from unity_0_cxx.cxx:277: qjsonparser.cpp:217:5: note: candidates are: ‘ Space’ 217 | Space = 0x20, | ^~~~~ qsettings.cpp:1523:8: note: ‘SettingsImpl:: SettingsImpl::Space’ 1523 | enum { Space = 0x1, Special = 0x2 }; | ^~~~~ qsettings.cpp:1605:71: error: reference to ‘Space’ is ambiguous 1605 | while (i < dataLen && charTraits[uchar(data.at(i))] & Space) | ^~~~~ qjsonparser.cpp:217:5: note: candidates are: ‘ Space’ 217 | Space = 0x20, | ^~~~~ qsettings.cpp:1523:8: note: ‘SettingsImpl:: SettingsImpl::Space’ 1523 | enum { Space = 0x1, Special = 0x2 }; | ^~~~~ Fix by making Space and Special local aliases (contexpr variables) instead of importing the whole SettingsImpl namespace. Amends 4ff65f0e5615b1132ec13c6eeba3647162d8dd0f. Pick-to: 6.8 6.5 Change-Id: I9e8f2422885121fb02938261fbae6231e62ae46d Reviewed-by: Thiago Macieira Reviewed-by: Friedemann Kleint (cherry picked from commit 057defe283f1db5fa9dfb1d8183b94d441c3707b) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/io/qsettings.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index dfe13138eb5..5dc18b5e6df 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -1554,7 +1554,8 @@ bool QConfFileSettingsPrivate::readIniLine(QByteArrayView data, qsizetype &dataP qsizetype &lineStart, qsizetype &lineLen, qsizetype &equalsPos) { - using namespace SettingsImpl; + constexpr auto Space = SettingsImpl::Space; + constexpr auto Special = SettingsImpl::Special; qsizetype dataLen = data.size(); bool inQuotes = false;