Fix reference leak in PySide::signalUpdateSource.
This commit is contained in:
parent
4c6e35634c
commit
9ee7d00d11
1 changed files with 5 additions and 6 deletions
|
|
@ -228,16 +228,15 @@ PyObject* signal_instance_get_item(PyObject* self, PyObject* key)
|
||||||
|
|
||||||
void signalUpdateSource(PyObject* source)
|
void signalUpdateSource(PyObject* source)
|
||||||
{
|
{
|
||||||
PyObject* attrs = PyObject_Dir(source);
|
Shiboken::AutoDecRef attrs(PyObject_Dir(source));
|
||||||
for(int i = 0, i_max = PyList_Size(attrs); i < i_max; i++) {
|
for(int i = 0, i_max = PyList_GET_SIZE(attrs.object()); i < i_max; i++) {
|
||||||
PyObject *attrName = PyList_GET_ITEM(attrs, i);
|
PyObject *attrName = PyList_GET_ITEM(attrs.object(), i);
|
||||||
PyObject *attr = PyObject_GetAttr(source, attrName);
|
Shiboken::AutoDecRef attr(PyObject_GetAttr(source, attrName));
|
||||||
if (attr->ob_type == &Signal_Type) {
|
if (attr->ob_type == &Signal_Type) {
|
||||||
Shiboken::AutoDecRef signalInstance(reinterpret_cast<PyObject*>(PyObject_New(SignalInstanceData, &SignalInstance_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);
|
PyObject_SetAttr(source, attrName, signalInstance);
|
||||||
}
|
}
|
||||||
Py_DECREF(attr);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue