aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/pysideconversions.h
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2010-04-29 11:41:22 -0300
committerRenato Filho <renato.filho@openbossa.org>2010-04-29 14:13:44 -0300
commit171c9ed6efaef75ec95fbb96bba890c4a8bf236b (patch)
treef9ffa45bde0574abd3b6066b1bda9022e14e27f0 /libpyside/pysideconversions.h
parent35a3178fdcb0b3e925491ac33b1f3ed02ced7725 (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.h9
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;