diff options
-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; |