diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-12-20 12:27:49 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-12-23 20:12:44 +0000 |
commit | 60544533125e83cf097a753468ce277905c3829f (patch) | |
tree | bc1bd01eed6bf7eaaa226c8f395a3202952566b1 | |
parent | 74fb17be2eac677b558d65e1cf400e560a387207 (diff) |
Port from <cctype> toupper() to QtMiscUtils::toAsciiUpper()
The C toupper function is locale-dependent. Given the right locale
(Türkiye, e.g.), toupper(i) is either
- İ (LATIN CAPITAL LETTER I WITH DOT ABOVE; if representable) or
- i (unchanged; if it isn't)
Both results are wrong for the use-cases at hand.
Task-number: QTBUG-109235
Change-Id: Ia9726f0079c5f2625d97a341836b3d4505db6be1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
(cherry picked from commit 09b4615abcdbef7087bb9862a3e73f3bb7930768)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/activeqt/container/qaxbase.cpp | 5 | ||||
-rw-r--r-- | src/activeqt/container/qaxdump.cpp | 5 | ||||
-rw-r--r-- | tools/dumpcpp/moc.cpp | 4 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp index d85ca1f..c3b9b0a 100644 --- a/src/activeqt/container/qaxbase.cpp +++ b/src/activeqt/container/qaxbase.cpp @@ -31,6 +31,7 @@ #include <private/qobject_p.h> #include <private/qmetaobject_p.h> #include <private/qmetaobjectbuilder_p.h> +#include <private/qtools_p.h> #include <qt_windows.h> #include <ocidl.h> @@ -2284,7 +2285,7 @@ void MetaObjectGenerator::addSetterSlot(const QByteArray &property) if (isupper(prototype.at(0))) { prototype.insert(0, "Set"); } else { - prototype[0] = char(toupper(prototype[0])); + prototype[0] = QtMiscUtils::toAsciiUpper(prototype[0]); prototype.insert(0, "set"); } const QByteArray type = propertyType(property); @@ -2482,7 +2483,7 @@ void MetaObjectGenerator::readFuncsInfo(ITypeInfo *typeinfo, ushort nFuncs) set = "Set"; } else { set = "set"; - prototype[0] = char(toupper(prototype[0])); + prototype[0] = QtMiscUtils::toAsciiUpper(prototype[0]); } prototype = set + prototype; diff --git a/src/activeqt/container/qaxdump.cpp b/src/activeqt/container/qaxdump.cpp index 4a61ca7..5623e43 100644 --- a/src/activeqt/container/qaxdump.cpp +++ b/src/activeqt/container/qaxdump.cpp @@ -10,6 +10,7 @@ #include <qt_windows.h> #include <qtextstream.h> #include <qiodevicebase.h> +#include <private/qtools_p.h> #include <ctype.h> @@ -78,7 +79,7 @@ static QByteArray toType(const QByteArray &t) if (type.at(0) == 'Q') type.remove(0, 1); - type[0] = toupper(type.at(0)); + type[0] = QtMiscUtils::toAsciiLower(type.at(0)); if (type == "VariantList") type = "List"; else if (type == "Map<QVariant,QVariant>") @@ -316,7 +317,7 @@ QString qax_generateDocumentation(QAxBase *that) setterSlot = "Set" + name; } else { QByteArray nameUp = name; - nameUp[0] = char(toupper(nameUp.at(0))); + nameUp[0] = QtMiscUtils::toAsciiUpper(nameUp.at(0)); setterSlot = "set" + nameUp; } detail += QLatin1String("<a href=\"#") + QString::fromLatin1(setterSlot) + QLatin1String("\">") + diff --git a/tools/dumpcpp/moc.cpp b/tools/dumpcpp/moc.cpp index 78507bc..99f41c2 100644 --- a/tools/dumpcpp/moc.cpp +++ b/tools/dumpcpp/moc.cpp @@ -10,6 +10,8 @@ #include <QTemporaryFile> #include <QTextStream> +#include <private/qtools_p.h> + QT_BEGIN_NAMESPACE QByteArray setterName(const QByteArray &propertyName) @@ -18,7 +20,7 @@ QByteArray setterName(const QByteArray &propertyName) if (isupper(setter.at(0))) { setter = "Set" + setter; } else { - setter[0] = char(toupper(setter[0])); + setter[0] = QtMiscUtils::toAsciiUpper(setter[0]); setter = "set" + setter; } return setter; |