aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/qsignal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libpyside/qsignal.cpp')
-rw-r--r--libpyside/qsignal.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/libpyside/qsignal.cpp b/libpyside/qsignal.cpp
index b19c5658c..dff9cc184 100644
--- a/libpyside/qsignal.cpp
+++ b/libpyside/qsignal.cpp
@@ -229,10 +229,11 @@ PyObject* signal_instance_get_item(PyObject* self, PyObject* key)
void signalUpdateSource(PyObject* source)
{
Shiboken::AutoDecRef attrs(PyObject_Dir(source));
+
for(int i = 0, i_max = PyList_GET_SIZE(attrs.object()); i < i_max; i++) {
PyObject *attrName = PyList_GET_ITEM(attrs.object(), i);
- Shiboken::AutoDecRef attr(PyObject_GetAttr(source, attrName));
- if (attr->ob_type == &Signal_Type) {
+ Shiboken::AutoDecRef attr(PyObject_GetAttr((PyObject*)source->ob_type, attrName));
+ if (!attr.isNull() && (attr->ob_type == &Signal_Type)) {
Shiboken::AutoDecRef signalInstance(reinterpret_cast<PyObject*>(PyObject_New(SignalInstanceData, &SignalInstance_Type)));
signal_instance_initialize(signalInstance, attrName, reinterpret_cast<SignalData*>(attr.object()), source, 0);
PyObject_SetAttr(source, attrName, signalInstance);