diff options
14 files changed, 87 insertions, 60 deletions
diff --git a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp index f6acf9d60..e4aeb6e37 100644 --- a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp +++ b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp @@ -105,7 +105,7 @@ bool QVariant_isStringList(PyObject *list) Shiboken::AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList")); const Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object()); for (Py_ssize_t i = 0; i < size; ++i) { - PyObject *item = PySequence_Fast_GET_ITEM(fast.object(), i); + Shiboken::AutoDecRef item(PySequence_GetItem(fast.object(), i)); if (PyUnicode_Check(item) == 0) return false; } diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index 56d813b7e..50f1bfc8e 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -261,7 +261,7 @@ static QVariant QVariant_convertToVariantList(PyObject *list) Shiboken::AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList")); const Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object()); for (Py_ssize_t i = 0; i < size; ++i) { - PyObject *pyItem = PySequence_Fast_GET_ITEM(fast.object(), i); + Shiboken::AutoDecRef pyItem(PySequence_GetItem(fast.object(), i)); QVariant item = %CONVERTTOCPP[QVariant](pyItem); lst.append(item); } diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp index aacac3508..428840898 100644 --- a/sources/pyside6/PySide6/glue/qtgui.cpp +++ b/sources/pyside6/PySide6/glue/qtgui.cpp @@ -716,7 +716,7 @@ Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_1, "Can't turn into sequence")); if (PySequence_Size(seq) == 16) { float values[16]; for (Py_ssize_t i = 0; i < 16; ++i) { - PyObject *pv = PySequence_Fast_GET_ITEM(seq.object(), i); + Shiboken::AutoDecRef pv(PySequence_GetItem(seq.object(), i)); values[i] = PyFloat_AsDouble(pv); } @@ -741,8 +741,8 @@ for (Py_ssize_t i = 0; i < 16; ++i) { if (PySequence_Check(_key)) { Shiboken::AutoDecRef key(PySequence_Fast(_key, "Invalid matrix index.")); if (PySequence_Fast_GET_SIZE(key.object()) == 2) { - PyObject *posx = PySequence_Fast_GET_ITEM(key.object(), 0); - PyObject *posy = PySequence_Fast_GET_ITEM(key.object(), 1); + Shiboken::AutoDecRef posx(PySequence_GetItem(key.object(), 0)); + Shiboken::AutoDecRef posy(PySequence_GetItem(key.object(), 1)); Py_ssize_t x = PyLong_AsSsize_t(posx); Py_ssize_t y = PyLong_AsSsize_t(posy); float ret = (*%CPPSELF)(x,y); diff --git a/sources/pyside6/PySide6/templates/core_common.xml b/sources/pyside6/PySide6/templates/core_common.xml index 07bafc6ff..dd4588f71 100644 --- a/sources/pyside6/PySide6/templates/core_common.xml +++ b/sources/pyside6/PySide6/templates/core_common.xml @@ -155,18 +155,22 @@ <template name="fix_native_return_number*,number*,number*,number*"> PyObject* _obj = %PYARG_0.object(); + Shiboken::AutoDecRef _obj0(PySequence_GetItem(_obj, 0)); + Shiboken::AutoDecRef _obj1(PySequence_GetItem(_obj, 1)); + Shiboken::AutoDecRef _obj2(PySequence_GetItem(_obj, 2)); + Shiboken::AutoDecRef _obj3(PySequence_GetItem(_obj, 3)); if (!PySequence_Check(_obj) || PySequence_Fast_GET_SIZE(_obj) != 4 - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 0)) - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 1)) - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 2)) - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 3))) { + || !PyNumber_Check(_obj0) + || !PyNumber_Check(_obj1) + || !PyNumber_Check(_obj2) + || !PyNumber_Check(_obj3)) { PyErr_SetString(PyExc_TypeError, "Sequence of 4 numbers expected"); } else { - *%1 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 0)); - *%2 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 1)); - *%3 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 2)); - *%4 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 3)); + *%1 = %CONVERTTOCPP[$TYPE](_obj0); + *%2 = %CONVERTTOCPP[$TYPE](_obj1); + *%3 = %CONVERTTOCPP[$TYPE](_obj2); + *%4 = %CONVERTTOCPP[$TYPE](_obj3); } </template> diff --git a/sources/pyside6/PySide6/templates/gui_common.xml b/sources/pyside6/PySide6/templates/gui_common.xml index 6a7404507..68ca5c2a8 100644 --- a/sources/pyside6/PySide6/templates/gui_common.xml +++ b/sources/pyside6/PySide6/templates/gui_common.xml @@ -20,7 +20,9 @@ Shiboken::AutoDecRef strList(PySequence_Fast(%PYARG_1, "Invalid sequence.")); Py_ssize_t lineCount = PySequence_Fast_GET_SIZE(strList.object()); for (Py_ssize_t line = 0; line < lineCount; ++line) { - if (!Shiboken::String::check(PySequence_Fast_GET_ITEM(strList.object(), line))) { + Shiboken::AutoDecRef _obj(PySequence_GetItem(strList.object(), line)); + bool isString = Shiboken::String::check(_obj); + if (!isString) { PyErr_SetString(PyExc_TypeError, "The argument must be a sequence of strings."); break; } @@ -30,8 +32,10 @@ break; auto xpm = new const char*[lineCount]; - for (Py_ssize_t line = 0; line < lineCount; ++line) - xpm[line] = Shiboken::String::toCString(PySequence_Fast_GET_ITEM(strList.object(), line)); + for (Py_ssize_t line = 0; line < lineCount; ++line) { + Shiboken::AutoDecRef _obj(PySequence_GetItem(strList.object(), line)); + xpm[line] = Shiboken::String::toCString(_obj); + } %0 = new %TYPE(xpm); @@ -101,19 +105,23 @@ const Py_ssize_t size = PySequence_Fast_GET_SIZE(seq.object()); if (size > 1) { - if (%ISCONVERTIBLE[QString](PySequence_Fast_GET_ITEM(seq.object(), 1))) - %1 = %CONVERTTOCPP[QString](PySequence_Fast_GET_ITEM(seq.object(), 1)); + Shiboken::AutoDecRef _obj1(PySequence_GetItem(seq.object(), 1)); + if (%ISCONVERTIBLE[QString](_obj1)) + %1 = %CONVERTTOCPP[QString](_obj1); else qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to unicode."); } if (size > 2) { - if (%ISCONVERTIBLE[int](PySequence_Fast_GET_ITEM(seq.object(), 2))) - %2 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(seq.object(), 2)); + Shiboken::AutoDecRef _obj2(PySequence_GetItem(seq.object(), 2)); + if (%ISCONVERTIBLE[int](_obj2)) + %2 = %CONVERTTOCPP[int](_obj2); else qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to int."); } - %PYARG_0.reset(PySequence_Fast_GET_ITEM(seq.object(), 0)); + Shiboken::AutoDecRef _sobj(PySequence_GetItem(seq.object(), 0)); + + %PYARG_0.reset(_sobj); Py_INCREF(%PYARG_0); // we need to incref, because "%PYARG_0 = ..." will decref the tuple and the tuple will be decrefed again at the end of this scope. } @@ -210,7 +218,7 @@ "Failed to parse sequence on %TYPE constructor.")); float values[%SIZE]; for(int i=0; i < %SIZE; i++) { - PyObject *pv = PySequence_Fast_GET_ITEM(fast.object(), i); + Shiboken::AutoDecRef pv(PySequence_GetItem(fast.object(), i)); values[i] = %CONVERTTOCPP[float](pv); } %0 = new %TYPE(values); diff --git a/sources/pyside6/PySide6/templates/opengl_common.xml b/sources/pyside6/PySide6/templates/opengl_common.xml index 566ebe6ee..3435ef810 100644 --- a/sources/pyside6/PySide6/templates/opengl_common.xml +++ b/sources/pyside6/PySide6/templates/opengl_common.xml @@ -12,7 +12,7 @@ Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2, "Failed to parse sequence with type %VECTOR_TYPE.")); for(Py_ssize_t i=0; i < _size; i++) { - PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i); + Shiboken::AutoDecRef pv(PySequence_GetItem(fast.object(), i)); _list[i] = %CONVERTTOCPP[$ATTR_TYPE](pv); } } diff --git a/sources/pyside6/PySide6/templates/widgets_common.xml b/sources/pyside6/PySide6/templates/widgets_common.xml index b0dee43cd..fe2f35e7a 100644 --- a/sources/pyside6/PySide6/templates/widgets_common.xml +++ b/sources/pyside6/PySide6/templates/widgets_common.xml @@ -19,7 +19,8 @@ const Py_ssize_t numItems = PySequence_Size(%PYARG_1); Shiboken::AutoArrayPointer<QGraphicsItem*> %out(numItems); for (Py_ssize_t i = 0; i < numItems; ++i) { - %out[i] = %CONVERTTOCPP[QGraphicsItem*](PySequence_Fast_GET_ITEM(%PYARG_1, i)); + Shiboken::AutoDecRef _arg1(PySequence_GetItem(%PYARG_1, i)); + %out[i] = %CONVERTTOCPP[QGraphicsItem*](_arg1); } </template> @@ -44,7 +45,8 @@ const Py_ssize_t numOptions = PySequence_Size(%PYARG_2); Shiboken::AutoArrayPointer<QStyleOptionGraphicsItem> %out(numOptions); for (Py_ssize_t i=0; i < numOptions; ++i) { - %out[i] = %CONVERTTOCPP[QStyleOptionGraphicsItem](PySequence_Fast_GET_ITEM(%PYARG_1, i)); + Shiboken::AutoDecRef _arg1(PySequence_GetItem(%PYARG_1, i)); + %out[i] = %CONVERTTOCPP[QStyleOptionGraphicsItem](_arg1); } </template> diff --git a/sources/pyside6/libpyside/pysidemetafunction.cpp b/sources/pyside6/libpyside/pysidemetafunction.cpp index 10ba894a7..342ffc04d 100644 --- a/sources/pyside6/libpyside/pysidemetafunction.cpp +++ b/sources/pyside6/libpyside/pysidemetafunction.cpp @@ -156,12 +156,13 @@ bool call(QObject *self, int methodIndex, PyObject *args, PyObject **retVal) methArgs[i] = methValues[i].data(); if (i == 0) // Don't do this for return type continue; + Shiboken::AutoDecRef obj(PySequence_GetItem(sequence.object(), i - 1)); if (metaType.id() == QMetaType::QString) { QString tmp; - converter.toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i - 1), &tmp); + converter.toCpp(obj, &tmp); methValues[i] = tmp; } else { - converter.toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i - 1), methArgs[i]); + converter.toCpp(obj, methArgs[i]); } } else { PyErr_Format(PyExc_TypeError, "Unknown type used to call meta function (that may be a signal): %s", argTypes[i].constData()); diff --git a/sources/shiboken6/ApiExtractor/predefined_templates.cpp b/sources/shiboken6/ApiExtractor/predefined_templates.cpp index 3d7e8f94f..6f38ee7f6 100644 --- a/sources/shiboken6/ApiExtractor/predefined_templates.cpp +++ b/sources/shiboken6/ApiExtractor/predefined_templates.cpp @@ -176,8 +176,10 @@ const PredefinedTemplates &predefinedTemplates() // QPair/std::pair {u"shiboken_conversion_pysequence_to_cpppair"_s, - uR"(%out.first = %CONVERTTOCPP[%OUTTYPE_0](PySequence_Fast_GET_ITEM(%in, 0)); -%out.second = %CONVERTTOCPP[%OUTTYPE_1](PySequence_Fast_GET_ITEM(%in, 1)); + uR"(Shiboken::AutoDecRef objfirst(PySequence_GetItem(%in, 0)); +Shiboken::AutoDecRef objsecond(PySequence_GetItem(%in, 1)); +%out.first = %CONVERTTOCPP[%OUTTYPE_0](objfirst); +%out.second = %CONVERTTOCPP[%OUTTYPE_1](objsecond); )"_s}, {u"shiboken_conversion_cpppair_to_pytuple"_s, diff --git a/sources/shiboken6/libshiboken/basewrapper.cpp b/sources/shiboken6/libshiboken/basewrapper.cpp index 04bbfd6f9..5256f73a8 100644 --- a/sources/shiboken6/libshiboken/basewrapper.cpp +++ b/sources/shiboken6/libshiboken/basewrapper.cpp @@ -894,9 +894,9 @@ std::vector<SbkObject *> splitPyObject(PyObject *pyObj) AutoDecRef lst(PySequence_Fast(pyObj, "Invalid keep reference object.")); if (!lst.isNull()) { for (Py_ssize_t i = 0, i_max = PySequence_Fast_GET_SIZE(lst.object()); i < i_max; ++i) { - PyObject *item = PySequence_Fast_GET_ITEM(lst.object(), i); + Shiboken::AutoDecRef item(PySequence_GetItem(lst.object(), i)); if (Object::checkType(item)) - result.push_back(reinterpret_cast<SbkObject *>(item)); + result.push_back(reinterpret_cast<SbkObject *>(item.object())); } } } else { @@ -1004,7 +1004,7 @@ introduceWrapperType(PyObject *enclosingObject, unsigned wrapperFlags) { assert(PySequence_Fast_GET_SIZE(bases) > 0); - typeSpec->slots[0].pfunc = PySequence_Fast_GET_ITEM(bases, 0); + typeSpec->slots[0].pfunc = PySequence_GetItem(bases, 0); auto *type = SbkType_FromSpecBasesMeta(typeSpec, bases, SbkObjectType_TypeF()); @@ -1665,8 +1665,10 @@ void setParent(PyObject *parent, PyObject *child) */ if (PySequence_Check(child) && !Object::checkType(child)) { Shiboken::AutoDecRef seq(PySequence_Fast(child, nullptr)); - for (Py_ssize_t i = 0, max = PySequence_Size(seq); i < max; ++i) - setParent(parent, PySequence_Fast_GET_ITEM(seq.object(), i)); + for (Py_ssize_t i = 0, max = PySequence_Size(seq); i < max; ++i) { + Shiboken::AutoDecRef obj(PySequence_GetItem(seq.object(), i)); + setParent(parent, obj); + } return; } diff --git a/sources/shiboken6/libshiboken/helper.cpp b/sources/shiboken6/libshiboken/helper.cpp index 46af68956..f50136aff 100644 --- a/sources/shiboken6/libshiboken/helper.cpp +++ b/sources/shiboken6/libshiboken/helper.cpp @@ -148,10 +148,9 @@ static void formatPySequence(PyObject *obj, std::ostream &str) if (i) str << ", "; str << '('; - PyObject *item = PySequence_GetItem(obj, i); + Shiboken::AutoDecRef item(PySequence_GetItem(obj, i)); formatPyObject(item, str); str << ')'; - Py_XDECREF(item); } if (printSize < size) str << ",..."; @@ -529,7 +528,7 @@ int *sequenceToIntArray(PyObject *obj, bool zeroTerminated) int *array = new int[size + (zeroTerminated ? 1 : 0)]; for (int i = 0; i < size; i++) { - PyObject *item = PySequence_Fast_GET_ITEM(seq.object(), i); + Shiboken::AutoDecRef item(PySequence_GetItem(seq.object(), i)); if (!PyLong_Check(item)) { PyErr_SetString(PyExc_TypeError, "Sequence of ints expected"); delete[] array; diff --git a/sources/shiboken6/libshiboken/sbkarrayconverter.cpp b/sources/shiboken6/libshiboken/sbkarrayconverter.cpp index bcc3fb767..be7c6296e 100644 --- a/sources/shiboken6/libshiboken/sbkarrayconverter.cpp +++ b/sources/shiboken6/libshiboken/sbkarrayconverter.cpp @@ -22,9 +22,8 @@ static bool sequenceAllOf(PyObject *pyIn, Predicate p) { const Py_ssize_t size = PySequence_Size(pyIn); for (Py_ssize_t i = 0; i < size; ++i) { - PyObject *item = PySequence_GetItem(pyIn, i); + AutoDecRef item(PySequence_GetItem(pyIn, i)); const bool ok = p(item); - Py_XDECREF(item); if (!ok) return false; } @@ -37,9 +36,8 @@ inline void convertPySequence(PyObject *pyIn, Converter c, T *out) { const Py_ssize_t size = PySequence_Size(pyIn); for (Py_ssize_t i = 0; i < size; ++i) { - PyObject *item = PySequence_GetItem(pyIn, i); + AutoDecRef item(PySequence_GetItem(pyIn, i)); *out++ = c(item); - Py_XDECREF(item); } } diff --git a/sources/shiboken6/tests/samplebinding/typesystem_sample.xml b/sources/shiboken6/tests/samplebinding/typesystem_sample.xml index ca646a846..92a886b1e 100644 --- a/sources/shiboken6/tests/samplebinding/typesystem_sample.xml +++ b/sources/shiboken6/tests/samplebinding/typesystem_sample.xml @@ -226,8 +226,8 @@ <add-conversion type="PySequence"> %OUTTYPE& list = %out; Shiboken::AutoDecRef seq(PySequence_Fast(%in, 0)); - for (int i = 0; i < PySequence_Fast_GET_SIZE(seq.object()); i++) { - PyObject* pyItem = PySequence_Fast_GET_ITEM(seq.object(), i); + for (int i = 0; i < PySequence_Size(seq.object()); i++) { + Shiboken::AutoDecRef pyItem(PySequence_GetItem(seq.object(), i)); PStr cppItem = %CONVERTTOCPP[PStr](pyItem); list.push_back(cppItem); } @@ -1129,8 +1129,10 @@ <replace-type modified-type="PySequence" /> <conversion-rule class="native"> Shiboken::AutoArrayPointer<Point> %out(%1); - for (Py_ssize_t i = 0; i < %1; ++i) - %out[i] = %CONVERTTOCPP[Point](PySequence_Fast_GET_ITEM(%PYARG_1, i)); + for (Py_ssize_t i = 0; i < %1; ++i) { + Shiboken::AutoDecRef _obj(PySequence_GetItem(%PYARG_1, i)); + %out[i] = %CONVERTTOCPP[Point](_obj); + } </conversion-rule> </modify-argument> </modify-function> @@ -1385,18 +1387,22 @@ </template> <template name="fix_native_return_int*,int*,int*,int*"> PyObject* _obj = %PYARG_0; + Shiboken::AutoDecRef _obj0(PySequence_GetItem(_obj, 0)); + Shiboken::AutoDecRef _obj1(PySequence_GetItem(_obj, 1)); + Shiboken::AutoDecRef _obj2(PySequence_GetItem(_obj, 2)); + Shiboken::AutoDecRef _obj3(PySequence_GetItem(_obj, 3)); if (!PySequence_Check(_obj) || PySequence_Fast_GET_SIZE(_obj) != 4 - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 0)) - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 1)) - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 2)) - || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 3))) { + || !PyNumber_Check(_obj0) + || !PyNumber_Check(_obj1) + || !PyNumber_Check(_obj2) + || !PyNumber_Check(_obj3)) { PyErr_SetString(PyExc_TypeError, "Sequence of 4 numbers expected"); } else { - *%1 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(_obj, 0)); - *%2 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(_obj, 1)); - *%3 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(_obj, 2)); - *%4 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(_obj, 3)); + *%1 = %CONVERTTOCPP[int](_obj0); + *%2 = %CONVERTTOCPP[int](_obj1); + *%3 = %CONVERTTOCPP[int](_obj2); + *%4 = %CONVERTTOCPP[int](_obj3); } </template> <modify-function signature="getMargins(int*,int*,int*,int*)const"> @@ -1586,9 +1592,10 @@ const auto numItems = PySequence_Size(%PYARG_1); Shiboken::AutoArrayPointer<int> %out(numItems); for (Py_ssize_t i = 0; i < numItems; ++i) { - if (%CHECKTYPE[int](PySequence_Fast_GET_ITEM(%PYARG_1, i))) - %out[i] = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(%PYARG_1, i)); - else if (%ISCONVERTIBLE[int](PySequence_Fast_GET_ITEM(%PYARG_1, i))) + Shiboken::AutoDecRef _obj(PySequence_GetItem(%PYARG_1, i)); + if (%CHECKTYPE[int](_obj)) + %out[i] = %CONVERTTOCPP[int](_obj); + else if (%ISCONVERTIBLE[int](_obj)) %out[i] = -1; else %out[i] = -2; @@ -1612,8 +1619,10 @@ <inject-code class="target" position="beginning"> int numItems = PySequence_Size(%PYARG_1); int *cppItems = new int[numItems]; - for (int i = 0; i < numItems; i++) - cppItems[i] = %CONVERTTOCPP[int](PySequence_GetItem(%PYARG_1, i)); + for (int i = 0; i < numItems; i++) { + Shiboken::AutoDecRef _obj(PySequence_GetItem(%PYARG_1, i)); + cppItems[i] = %CONVERTTOCPP[int](_obj); + } %RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(numItems, cppItems); %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0); delete[] cppItems; @@ -1953,7 +1962,9 @@ Shiboken::AutoDecRef strList(PySequence_Fast(%PYARG_1, "The argument must be a sequence.")); int lineCount = PySequence_Fast_GET_SIZE(strList.object()); for (int line = 0; line < lineCount; ++line) { - if (!Shiboken::String::check(PySequence_Fast_GET_ITEM(strList.object(), line))) { + Shiboken::AutoDecRef _obj(PySequence_GetItem(strList.object(), line)); + bool isString = Shiboken::String::check(_obj); + if (!isString) { PyErr_SetString(PyExc_TypeError, "The argument must be a sequence of strings."); break; } diff --git a/sources/shiboken6/tests/smartbinding/typesystem_smart.xml b/sources/shiboken6/tests/smartbinding/typesystem_smart.xml index e479e4ddf..fd44f4f6d 100644 --- a/sources/shiboken6/tests/smartbinding/typesystem_smart.xml +++ b/sources/shiboken6/tests/smartbinding/typesystem_smart.xml @@ -12,7 +12,7 @@ <template name="pyseq_to_cpplist_convertion"> Shiboken::AutoDecRef seq(PySequence_Fast(%in, 0)); for (int i = 0, size = PySequence_Fast_GET_SIZE(seq.object()); i < size; ++i) { - PyObject* pyItem = PySequence_Fast_GET_ITEM(seq.object(), i); + Shiboken::AutoDecRef pyItem(PySequence_GetItem(seq.object(), i)); %OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem); %out.push_back(cppItem); } |
