diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-10-18 17:44:54 +0300 |
---|---|---|
committer | Anton Kudryavtsev <antkudr@mail.ru> | 2016-12-01 12:20:23 +0000 |
commit | fec08545ff0b4fb2ce68a7d7502273a599472141 (patch) | |
tree | 820bf07491950824e4676c3cb68e89420abb4cea /src/corelib/kernel/qvariant.cpp | |
parent | 65d48808775d4c32b4be05798207f728d165bbfa (diff) |
QVariant: optimize convert() for bool case
Do not create QByteArray from const char* to compare with other
QByteArray, because there is an overloaded operator==.
So avoid needless allocations.
Reorder condition, because isEmpty() method is cheaper than
string compare.
Change-Id: I8d2c8a0fb247528d9ce485007431167372d62bff
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index ccfa7d0d38..0ffc22d810 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -319,7 +319,7 @@ template<typename TInput, typename LiteralWrapper> inline bool qt_convertToBool(const QVariant::Private *const d) { TInput str = v_cast<TInput>(d)->toLower(); - return !(str == LiteralWrapper("0") || str == LiteralWrapper("false") || str.isEmpty()); + return !(str.isEmpty() || str == LiteralWrapper("0") || str == LiteralWrapper("false")); } /*! @@ -700,7 +700,7 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok) bool *b = static_cast<bool *>(result); switch(d->type) { case QVariant::ByteArray: - *b = qt_convertToBool<QByteArray, QByteArray>(d); + *b = qt_convertToBool<QByteArray, const char*>(d); break; case QVariant::String: *b = qt_convertToBool<QString, QLatin1String>(d); |