summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qvariant_p.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h
index aa03bb298a..5729c0d2d5 100644
--- a/src/corelib/kernel/qvariant_p.h
+++ b/src/corelib/kernel/qvariant_p.h
@@ -161,13 +161,13 @@ class QVariantComparator {
struct FilteredComparator<T, /* IsAcceptedType = */ false> {
static bool compare(const QVariant::Private *m_a, const QVariant::Private *m_b)
{
- if (!QMetaType::isRegistered(m_a->type))
+ const char *const typeName = QMetaType::typeName(m_a->type);
+ if (Q_UNLIKELY(!typeName) && Q_LIKELY(!QMetaType::isRegistered(m_a->type)))
qFatal("QVariant::compare: type %d unknown to QVariant.", m_a->type);
const void *a_ptr = m_a->is_shared ? m_a->data.shared->ptr : &(m_a->data.ptr);
const void *b_ptr = m_b->is_shared ? m_b->data.shared->ptr : &(m_b->data.ptr);
- const char *const typeName = QMetaType::typeName(m_a->type);
uint typeNameLen = qstrlen(typeName);
if (typeNameLen > 0 && typeName[typeNameLen - 1] == '*')
return *static_cast<void *const *>(a_ptr) == *static_cast<void *const *>(b_ptr);