From 171c9ed6efaef75ec95fbb96bba890c4a8bf236b Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Thu, 29 Apr 2010 11:41:22 -0300 Subject: Fixed convertes memory leak. Reviewer: Hugo Parente Lima , Luciano Wolf --- libpyside/pysideconversions.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'libpyside/pysideconversions.h') 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::toPython(it.key()), - Shiboken::Converter::toPython(it.value())); + Shiboken::AutoDecRef keyObj(Shiboken::Converter::toPython(it.key())); + Shiboken::AutoDecRef valueObj(Shiboken::Converter::toPython(it.value())); + PyDict_SetItem(result, keyObj, valueObj); } return result; @@ -123,9 +123,10 @@ struct QSequenceConverter if (PyObject_TypeCheck(pyobj, Shiboken::SbkType())) return *reinterpret_cast(Shiboken::getCppPointer(pyobj, Shiboken::SbkType())); + 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::toCpp(pyItem); } return result; -- cgit v1.2.3