Core: Fix memory leaks with PySequence_GetItem
This commit is contained in:
@@ -576,14 +576,18 @@ int RotationPy::setCustomAttributes(const char* attr, PyObject* obj)
|
||||
}
|
||||
}
|
||||
else if (strcmp(attr, "Axes") == 0) {
|
||||
if (PySequence_Check(obj) && PySequence_Size(obj) == 2) {
|
||||
PyObject* vec1 = PySequence_GetItem(obj, 0);
|
||||
PyObject* vec2 = PySequence_GetItem(obj, 1);
|
||||
if (PyObject_TypeCheck(vec1, &(VectorPy::Type))
|
||||
&& PyObject_TypeCheck(vec2, &(VectorPy::Type))) {
|
||||
this->getRotationPtr()->setValue(*static_cast<VectorPy*>(vec1)->getVectorPtr(),
|
||||
*static_cast<VectorPy*>(vec2)->getVectorPtr());
|
||||
return 1;
|
||||
if (PySequence_Check(obj)) {
|
||||
Py::Sequence sequence(obj);
|
||||
if (sequence.size() == 2) {
|
||||
Py::Object vec1 = sequence.getItem(0);
|
||||
Py::Object vec2 = sequence.getItem(1);
|
||||
if (PyObject_TypeCheck(vec1.ptr(), &(VectorPy::Type))
|
||||
&& PyObject_TypeCheck(vec2.ptr(), &(VectorPy::Type))) {
|
||||
Base::Vector3d* pt1 = static_cast<VectorPy*>(vec1.ptr())->getVectorPtr();
|
||||
Base::Vector3d* pt2 = static_cast<VectorPy*>(vec2.ptr())->getVectorPtr();
|
||||
this->getRotationPtr()->setValue(*pt1, *pt2);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user