TD: Fix memory leaks with PySequence_GetItem

This commit is contained in:
wmayer
2024-05-09 00:03:01 +02:00
parent 03a371d6e3
commit 85d3d9eec0
5 changed files with 29 additions and 26 deletions

View File

@@ -314,15 +314,14 @@ PyObject* DrawViewPartPy::removeCosmeticVertex(PyObject *args)
}
if (PySequence_Check(pDelList)) {
Py_ssize_t nSize = PySequence_Size(pDelList);
for (Py_ssize_t i=0; i < nSize; i++) {
PyObject* item = PySequence_GetItem(pDelList, i);
if (!PyObject_TypeCheck(item, &(TechDraw::CosmeticVertexPy::Type))) {
Py::Sequence sequence(pDelList);
for (const auto& item : sequence) {
if (!PyObject_TypeCheck(item.ptr(), &(TechDraw::CosmeticVertexPy::Type))) {
PyErr_Format(PyExc_TypeError ,"Types in sequence must be 'CosmeticVertex', not %s",
Py_TYPE(item)->tp_name);
Py_TYPE(item.ptr())->tp_name);
return nullptr;
}
TechDraw::CosmeticVertexPy* cvPy = static_cast<TechDraw::CosmeticVertexPy*>(item);
TechDraw::CosmeticVertexPy* cvPy = static_cast<TechDraw::CosmeticVertexPy*>(item.ptr());
TechDraw::CosmeticVertex* cv = cvPy->getCosmeticVertexPtr();
dvp->removeCosmeticVertex(cv->getTagAsString());
}