diff options
Diffstat (limited to 'libpyside')
-rw-r--r-- | libpyside/qsignal.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libpyside/qsignal.cpp b/libpyside/qsignal.cpp index 43c02f1cd..aa211a720 100644 --- a/libpyside/qsignal.cpp +++ b/libpyside/qsignal.cpp @@ -228,16 +228,15 @@ PyObject* signal_instance_get_item(PyObject* self, PyObject* key) void signalUpdateSource(PyObject* source) { - PyObject* attrs = PyObject_Dir(source); - for(int i = 0, i_max = PyList_Size(attrs); i < i_max; i++) { - PyObject *attrName = PyList_GET_ITEM(attrs, i); - PyObject *attr = PyObject_GetAttr(source, attrName); + 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 signalInstance(reinterpret_cast<PyObject*>(PyObject_New(SignalInstanceData, &SignalInstance_Type))); - signal_instance_initialize(signalInstance, attrName, reinterpret_cast<SignalData*>(attr), source, 0); + signal_instance_initialize(signalInstance, attrName, reinterpret_cast<SignalData*>(attr.object()), source, 0); PyObject_SetAttr(source, attrName, signalInstance); } - Py_DECREF(attr); } } |