diff options
Diffstat (limited to 'libpyside/signalmanager.cpp')
-rw-r--r-- | libpyside/signalmanager.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 7d5b5fc78..b41db1a36 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -201,10 +201,15 @@ static bool emitNormalSignal(QObject* source, int signalIndex, const char* signa for (i = 0; i < argsGiven; ++i) { QByteArray typeName = argTypes[i].toAscii(); Shiboken::TypeResolver* typeResolver = Shiboken::TypeResolver::get(typeName); - int typeId = QMetaType::type(typeName); - if (typeResolver && typeId) { - if (Shiboken::TypeResolver::getType(typeName) == Shiboken::TypeResolver::ValueType) + if (typeResolver) { + if (Shiboken::TypeResolver::getType(typeName) == Shiboken::TypeResolver::ValueType) { + int typeId = QMetaType::type(typeName); + if (!typeId) { + PyErr_Format(PyExc_TypeError, "Value type used on signal needs to be registered on meta type: %s", typeName.data()); + break; + } signalValues[i] = QVariant(typeId, (void*) 0); + } signalArgs[i+1] = signalValues[i].data(); typeResolver->toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i), &signalArgs[i+1]); } else { |