fix some memory leaks in PyBullet.resetJointStateMultiDof and setJointMotorControlMultiDof

Fixes Issue 2065
This commit is contained in:
erwincoumans
2019-01-23 08:54:17 -08:00
parent ae8e83988b
commit e02f82f172

View File

@@ -2449,9 +2449,13 @@ static PyObject* pybullet_setJointMotorControlMultiDof(PyObject* self, PyObject*
{ {
targetPositionSize = 4; targetPositionSize = 4;
} }
for (i = 0; i < targetPositionSize; i++) if (targetPositionSeq)
{ {
targetPositionArray[i] = pybullet_internalGetFloatFromSequence(targetPositionSeq, i); for (i = 0; i < targetPositionSize; i++)
{
targetPositionArray[i] = pybullet_internalGetFloatFromSequence(targetPositionSeq, i);
}
Py_DECREF(targetPositionSeq);
} }
} }
@@ -2470,11 +2474,14 @@ static PyObject* pybullet_setJointMotorControlMultiDof(PyObject* self, PyObject*
{ {
targetVelocitySize = 3; targetVelocitySize = 3;
} }
for (i = 0; i < targetVelocitySize; i++) if (targetVelocitySeq)
{ {
targetVelocityArray[i] = pybullet_internalGetFloatFromSequence(targetVelocitySeq, i); for (i = 0; i < targetVelocitySize; i++)
{
targetVelocityArray[i] = pybullet_internalGetFloatFromSequence(targetVelocitySeq, i);
}
Py_DECREF(targetVelocitySeq);
} }
} }
if (targetForceObj) if (targetForceObj)
@@ -2492,11 +2499,14 @@ static PyObject* pybullet_setJointMotorControlMultiDof(PyObject* self, PyObject*
{ {
targetForceSize = 3; targetForceSize = 3;
} }
for (i = 0; i < targetForceSize; i++) if (targetForceSeq)
{ {
targetForceArray[i] = pybullet_internalGetFloatFromSequence(targetForceSeq, i); for (i = 0; i < targetForceSize; i++)
{
targetForceArray[i] = pybullet_internalGetFloatFromSequence(targetForceSeq, i);
}
Py_DECREF(targetForceSeq);
} }
} }
@@ -3712,9 +3722,13 @@ static PyObject* pybullet_resetJointStateMultiDof(PyObject* self, PyObject* args
{ {
targetPositionSize = 4; targetPositionSize = 4;
} }
for (i = 0; i < targetPositionSize; i++) if (targetPositionSeq)
{ {
targetPositionArray[i] = pybullet_internalGetFloatFromSequence(targetPositionSeq, i); for (i = 0; i < targetPositionSize; i++)
{
targetPositionArray[i] = pybullet_internalGetFloatFromSequence(targetPositionSeq, i);
}
Py_DECREF(targetPositionSeq);
} }
} }
@@ -3733,11 +3747,14 @@ static PyObject* pybullet_resetJointStateMultiDof(PyObject* self, PyObject* args
{ {
targetVelocitySize = 3; targetVelocitySize = 3;
} }
for (i = 0; i < targetVelocitySize; i++) if (targetVelocitySeq)
{ {
targetVelocityArray[i] = pybullet_internalGetFloatFromSequence(targetVelocitySeq, i); for (i = 0; i < targetVelocitySize; i++)
{
targetVelocityArray[i] = pybullet_internalGetFloatFromSequence(targetVelocitySeq, i);
}
Py_DECREF(targetVelocitySeq);
} }
} }
if (targetPositionSize == 0 && targetVelocitySize == 0) if (targetPositionSize == 0 && targetVelocitySize == 0)