aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/signalmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libpyside/signalmanager.cpp')
-rw-r--r--libpyside/signalmanager.cpp11
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 {