diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/tools/qstring.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 614ba714e2..129a53e227 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -972,17 +972,21 @@ inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QLatin1String &s { return (QString::fromAscii(s1, s1 ? int(strlen(s1)) : -1) >= s2); } inline bool operator==(const QLatin1String &s1, const QLatin1String &s2) -{ return (qstrcmp(s1.latin1(), s2.latin1()) == 0); } +{ return (s1.size() == s2.size() && !memcmp(s1.latin1(), s2.latin1(), s1.size())); } inline bool operator!=(const QLatin1String &s1, const QLatin1String &s2) -{ return (qstrcmp(s1.latin1(), s2.latin1()) != 0); } +{ return (s1.size() != s2.size() || memcmp(s1.latin1(), s2.latin1(), s1.size())); } inline bool operator<(const QLatin1String &s1, const QLatin1String &s2) -{ return (qstrcmp(s1.latin1(), s2.latin1()) < 0); } +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r < 0) || (r == 0 && s1.size() < s2.size()); } inline bool operator<=(const QLatin1String &s1, const QLatin1String &s2) -{ return (qstrcmp(s1.latin1(), s2.latin1()) <= 0); } +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r < 0) || (r == 0 && s1.size() <= s2.size()); } inline bool operator>(const QLatin1String &s1, const QLatin1String &s2) -{ return (qstrcmp(s1.latin1(), s2.latin1()) > 0); } +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r > 0) || (r == 0 && s1.size() > s2.size()); } inline bool operator>=(const QLatin1String &s1, const QLatin1String &s2) -{ return (qstrcmp(s1.latin1(), s2.latin1()) >= 0); } +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r > 0) || (r == 0 && s1.size() >= s2.size()); } inline bool QString::operator==(const QByteArray &s) const |