diff options
Diffstat (limited to 'src/corelib/kernel/qmetaobject.cpp')
-rw-r--r-- | src/corelib/kernel/qmetaobject.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 8d4d4d943f..e584fbba8e 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -2309,24 +2309,24 @@ bool QMetaMethod::invoke(QObject *object, } QScopedPointer<QMetaCallEvent> event(new QMetaCallEvent(idx_offset, idx_relative, callFunction, nullptr, -1, paramCount)); - int *types = event->types(); + QMetaType *types = event->types(); void **args = event->args(); int argIndex = 0; for (int i = 1; i < paramCount; ++i) { - types[i] = QMetaType::fromName(typeNames[i]).id(); - if (types[i] == QMetaType::UnknownType && param[i]) { + types[i] = QMetaType::fromName(typeNames[i]); + if (!types[i].isValid() && param[i]) { // Try to register the type and try again before reporting an error. void *argv[] = { &types[i], &argIndex }; QMetaObject::metacall(object, QMetaObject::RegisterMethodArgumentMetaType, idx_relative + idx_offset, argv); - if (types[i] == -1) { + if (!types[i].isValid()) { qWarning("QMetaMethod::invoke: Unable to handle unregistered datatype '%s'", typeNames[i]); return false; } } - if (types[i] != QMetaType::UnknownType) { + if (types[i].isValid()) { args[i] = QMetaType(types[i]).create(param[i]); ++argIndex; } |