diff options
author | Renato Filho <renato.filho@openbossa.org> | 2010-04-29 11:41:22 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-04-29 14:13:44 -0300 |
commit | 171c9ed6efaef75ec95fbb96bba890c4a8bf236b (patch) | |
tree | f9ffa45bde0574abd3b6066b1bda9022e14e27f0 /libpyside/pysideconversions.h | |
parent | 35a3178fdcb0b3e925491ac33b1f3ed02ced7725 (diff) |
Fixed convertes memory leak.
Reviewer: Hugo Parente Lima <hugo.lima@openbossa.org>,
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libpyside/pysideconversions.h')
-rw-r--r-- | libpyside/pysideconversions.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libpyside/pysideconversions.h b/libpyside/pysideconversions.h index 0c13d053b..74553f8eb 100644 --- a/libpyside/pysideconversions.h +++ b/libpyside/pysideconversions.h @@ -68,9 +68,9 @@ struct QtDictConverter typename QtDict::const_iterator it = cppobj.begin(); for (; it != cppobj.end(); ++it) { - PyDict_SetItem(result, - Shiboken::Converter<typename QtDict::key_type>::toPython(it.key()), - Shiboken::Converter<typename QtDict::mapped_type>::toPython(it.value())); + Shiboken::AutoDecRef keyObj(Shiboken::Converter<typename QtDict::key_type>::toPython(it.key())); + Shiboken::AutoDecRef valueObj(Shiboken::Converter<typename QtDict::mapped_type>::toPython(it.value())); + PyDict_SetItem(result, keyObj, valueObj); } return result; @@ -123,9 +123,10 @@ struct QSequenceConverter if (PyObject_TypeCheck(pyobj, Shiboken::SbkType<T>())) return *reinterpret_cast<T*>(Shiboken::getCppPointer(pyobj, Shiboken::SbkType<T>())); + Shiboken::AutoDecRef fastSequence(PySequence_Fast(pyobj, "Invalid sequence object")); T result; for (int i = 0; i < PySequence_Size(pyobj); i++) { - PyObject* pyItem = PySequence_GetItem(pyobj, i); + PyObject* pyItem = PySequence_Fast_GET_ITEM(fastSequence, i); result << Shiboken::Converter<typename T::value_type>::toCpp(pyItem); } return result; |