Fix various Py::Object leak
This commit is contained in:
@@ -67,7 +67,7 @@ PyObject* ComplexGeoDataPy::getFacesFromSubelement(PyObject *args)
|
||||
Py::List vertex;
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = points.begin();
|
||||
it != points.end(); ++it)
|
||||
vertex.append(Py::Object(new Base::VectorPy(*it)));
|
||||
vertex.append(Py::asObject(new Base::VectorPy(*it)));
|
||||
tuple.setItem(0, vertex);
|
||||
Py::List facet;
|
||||
for (std::vector<Data::ComplexGeoData::Facet>::const_iterator
|
||||
|
||||
@@ -508,7 +508,7 @@ PyObject* DocumentObjectPy::getSubObject(PyObject *args, PyObject *keywds)
|
||||
}
|
||||
Py::Tuple rret(retType==1?2:3);
|
||||
rret.setItem(0,ret[0].obj);
|
||||
rret.setItem(1,Py::Object(new Base::MatrixPy(ret[0].mat)));
|
||||
rret.setItem(1,Py::asObject(new Base::MatrixPy(ret[0].mat)));
|
||||
if(retType!=1)
|
||||
rret.setItem(2,ret[0].pyObj);
|
||||
return Py::new_reference_to(rret);
|
||||
@@ -534,7 +534,7 @@ PyObject* DocumentObjectPy::getSubObject(PyObject *args, PyObject *keywds)
|
||||
} else {
|
||||
Py::Tuple rret(retType==1?2:3);
|
||||
rret.setItem(0,ret[i].obj);
|
||||
rret.setItem(1,Py::Object(new Base::MatrixPy(ret[i].mat)));
|
||||
rret.setItem(1,Py::asObject(new Base::MatrixPy(ret[i].mat)));
|
||||
if(retType!=1)
|
||||
rret.setItem(2,ret[i].pyObj);
|
||||
tuple.setItem(i,rret);
|
||||
@@ -601,7 +601,7 @@ PyObject* DocumentObjectPy::getLinkedObject(PyObject *args, PyObject *keywds)
|
||||
if(mat) {
|
||||
Py::Tuple ret(2);
|
||||
ret.setItem(0,pyObj);
|
||||
ret.setItem(1,Py::Object(new Base::MatrixPy(*mat)));
|
||||
ret.setItem(1,Py::asObject(new Base::MatrixPy(*mat)));
|
||||
return Py::new_reference_to(ret);
|
||||
}
|
||||
return Py::new_reference_to(pyObj);
|
||||
|
||||
@@ -435,7 +435,7 @@ static Py::Object _pyObjectFromAny(const App::any &value, const Expression *e) {
|
||||
else if (isAnyPyObject(value))
|
||||
return __pyObjectFromAny(value);
|
||||
if (is_type(value,typeid(Quantity)))
|
||||
return Py::Object(new QuantityPy(new Quantity(cast<Quantity>(value))));
|
||||
return Py::asObject(new QuantityPy(new Quantity(cast<Quantity>(value))));
|
||||
else if (is_type(value,typeid(double)))
|
||||
return Py::Float(cast<double>(value));
|
||||
else if (is_type(value,typeid(float)))
|
||||
@@ -543,7 +543,7 @@ static inline Quantity pyToQuantity(const Py::Object &pyobj,
|
||||
|
||||
Py::Object pyFromQuantity(const Quantity &quantity) {
|
||||
if(!quantity.getUnit().isEmpty())
|
||||
return Py::Object(new QuantityPy(new Quantity(quantity)));
|
||||
return Py::asObject(new QuantityPy(new Quantity(quantity)));
|
||||
double v = quantity.getValue();
|
||||
long l;
|
||||
int i;
|
||||
@@ -2073,7 +2073,7 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std
|
||||
else {
|
||||
auto mat = static_cast<Base::MatrixPy*>(pymat.ptr())->value();
|
||||
mat.scale(vec);
|
||||
return Py::Object(new Base::MatrixPy(mat));
|
||||
return Py::asObject(new Base::MatrixPy(mat));
|
||||
}
|
||||
}
|
||||
_EXPR_THROW("Function requires arguments to be either "
|
||||
@@ -2091,15 +2091,15 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std
|
||||
if (fabs(m.determinant()) <= DBL_EPSILON)
|
||||
_EXPR_THROW("Cannot invert singular matrix.",expr);
|
||||
m.inverseGauss();
|
||||
return Py::Object(new Base::MatrixPy(m));
|
||||
return Py::asObject(new Base::MatrixPy(m));
|
||||
|
||||
} else if (PyObject_TypeCheck(pyobj.ptr(),&Base::PlacementPy::Type)) {
|
||||
const auto &pla = *static_cast<Base::PlacementPy*>(pyobj.ptr())->getPlacementPtr();
|
||||
return Py::Object(new Base::PlacementPy(pla.inverse()));
|
||||
return Py::asObject(new Base::PlacementPy(pla.inverse()));
|
||||
|
||||
} else if (PyObject_TypeCheck(pyobj.ptr(),&Base::RotationPy::Type)) {
|
||||
const auto &rot = *static_cast<Base::RotationPy*>(pyobj.ptr())->getRotationPtr();
|
||||
return Py::Object(new Base::RotationPy(rot.inverse()));
|
||||
return Py::asObject(new Base::RotationPy(rot.inverse()));
|
||||
}
|
||||
_EXPR_THROW("Function requires the first argument to be either Matrix, Placement or Rotation.",expr);
|
||||
|
||||
@@ -2110,13 +2110,13 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std
|
||||
std::string type(pytype.as_string());
|
||||
Py::Object res;
|
||||
if(boost::iequals(type,"matrix"))
|
||||
res = Py::Object(new Base::MatrixPy(Base::Matrix4D()));
|
||||
res = Py::asObject(new Base::MatrixPy(Base::Matrix4D()));
|
||||
else if(boost::iequals(type,"vector"))
|
||||
res = Py::Object(new Base::VectorPy(Base::Vector3d()));
|
||||
res = Py::asObject(new Base::VectorPy(Base::Vector3d()));
|
||||
else if(boost::iequals(type,"placement"))
|
||||
res = Py::Object(new Base::PlacementPy(Base::Placement()));
|
||||
res = Py::asObject(new Base::PlacementPy(Base::Placement()));
|
||||
else if(boost::iequals(type,"rotation"))
|
||||
res = Py::Object(new Base::RotationPy(Base::Rotation()));
|
||||
res = Py::asObject(new Base::RotationPy(Base::Rotation()));
|
||||
else
|
||||
_EXPR_THROW("Unknown type '" << type << "'.",expr);
|
||||
if(args.size()>1) {
|
||||
@@ -2342,7 +2342,7 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std
|
||||
_EXPR_THROW("Unknown function: " << f,expr);
|
||||
}
|
||||
|
||||
return Py::Object(new QuantityPy(new Quantity(scaler * output, unit)));
|
||||
return Py::asObject(new QuantityPy(new Quantity(scaler * output, unit)));
|
||||
}
|
||||
|
||||
Py::Object FunctionExpression::_getPyValue() const {
|
||||
|
||||
@@ -236,7 +236,7 @@ bool FeaturePythonImp::getSubObject(DocumentObject *&ret, const char *subname,
|
||||
args.setItem(2,Py::Int(pyObj?2:1));
|
||||
Base::MatrixPy *pyMat = new Base::MatrixPy(new Base::Matrix4D);
|
||||
if(_mat) *pyMat->getMatrixPtr() = *_mat;
|
||||
args.setItem(3,Py::Object(pyMat));
|
||||
args.setItem(3,Py::asObject(pyMat));
|
||||
args.setItem(4,Py::Boolean(transform));
|
||||
args.setItem(5,Py::Int(depth));
|
||||
|
||||
@@ -326,7 +326,7 @@ bool FeaturePythonImp::getLinkedObject(DocumentObject *&ret, bool recurse,
|
||||
args.setItem(1,Py::Boolean(recurse));
|
||||
Base::MatrixPy *pyMat = new Base::MatrixPy(new Base::Matrix4D);
|
||||
if(_mat) *pyMat->getMatrixPtr() = *_mat;
|
||||
args.setItem(2,Py::Object(pyMat));
|
||||
args.setItem(2,Py::asObject(pyMat));
|
||||
args.setItem(3,Py::Boolean(transform));
|
||||
args.setItem(4,Py::Int(depth));
|
||||
|
||||
|
||||
@@ -1934,7 +1934,7 @@ PyObject *PropertyLinkSubList::getPyObject(void)
|
||||
#endif
|
||||
for (unsigned int i = 0; i<count; i++) {
|
||||
Py::Tuple tup(2);
|
||||
tup[0] = Py::Object(_lValueList[i]->getPyObject());
|
||||
tup[0] = Py::asObject(_lValueList[i]->getPyObject());
|
||||
std::string subItem;
|
||||
if (_lSubList.size() > i)
|
||||
subItem = _lSubList[i];
|
||||
|
||||
@@ -560,7 +560,7 @@ void QuantityPy::setValue(Py::Float arg)
|
||||
|
||||
Py::Object QuantityPy::getUnit(void) const
|
||||
{
|
||||
return Py::Object(new UnitPy(new Unit(getQuantityPtr()->getUnit())));
|
||||
return Py::asObject(new UnitPy(new Unit(getQuantityPtr()->getUnit())));
|
||||
}
|
||||
|
||||
void QuantityPy::setUnit(Py::Object arg)
|
||||
|
||||
@@ -394,7 +394,7 @@ Py::Object DocumentPy::getDocument(void) const
|
||||
}
|
||||
|
||||
Py::Object DocumentPy::getEditingTransform(void) const {
|
||||
return Py::Object(new Base::MatrixPy(new Base::Matrix4D(
|
||||
return Py::asObject(new Base::MatrixPy(new Base::Matrix4D(
|
||||
getDocumentPtr()->getEditingTransform())));
|
||||
}
|
||||
|
||||
|
||||
@@ -655,7 +655,7 @@ Py::Object AbstractSplitViewPy::getViewer(const Py::Tuple& args)
|
||||
Gui::View3DInventorViewer* view = _view->getViewer(viewIndex);
|
||||
if (!view)
|
||||
throw Py::IndexError("Index out of range");
|
||||
return Py::Object(view->getPyObject());
|
||||
return Py::asObject(view->getPyObject());
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
throw Py::RuntimeError(e.what());
|
||||
@@ -674,7 +674,7 @@ Py::Object AbstractSplitViewPy::sequence_item(ssize_t viewIndex)
|
||||
if (viewIndex >= _view->getSize() || viewIndex < 0)
|
||||
throw Py::IndexError("Index out of range");
|
||||
PyObject* viewer = _view->getViewer(viewIndex)->getPyObject();
|
||||
return Py::Object(viewer);
|
||||
return Py::asObject(viewer);
|
||||
}
|
||||
|
||||
int AbstractSplitViewPy::sequence_length()
|
||||
|
||||
@@ -45,7 +45,7 @@ std::string ViewProviderLinkPy::representation(void) const
|
||||
}
|
||||
|
||||
Py::Object ViewProviderLinkPy::getDraggingPlacement() const {
|
||||
return Py::Object(new Base::PlacementPy(new Base::Placement(
|
||||
return Py::asObject(new Base::PlacementPy(new Base::Placement(
|
||||
getViewProviderLinkPtr()->currentDraggingPlacement())));
|
||||
}
|
||||
|
||||
|
||||
@@ -1300,7 +1300,7 @@ Py::Tuple FemMeshPy::getGroups(void) const
|
||||
|
||||
Py::Object FemMeshPy::getVolume(void) const
|
||||
{
|
||||
return Py::Object(new Base::QuantityPy(new Base::Quantity(getFemMeshPtr()->getVolume())));
|
||||
return Py::asObject(new Base::QuantityPy(new Base::Quantity(getFemMeshPtr()->getVolume())));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -425,7 +425,7 @@ PyObject* MeshPy::crossSections(PyObject *args)
|
||||
for (MeshObject::TPolylines::const_iterator jt = it->begin(); jt != it->end(); ++jt) {
|
||||
Py::List polyline;
|
||||
for (std::vector<Base::Vector3f>::const_iterator kt = jt->begin(); kt != jt->end(); ++kt) {
|
||||
polyline.append(Py::Object(new Base::VectorPy(*kt)));
|
||||
polyline.append(Py::asObject(new Base::VectorPy(*kt)));
|
||||
}
|
||||
section.append(polyline);
|
||||
}
|
||||
@@ -1989,7 +1989,7 @@ Py::Tuple MeshPy::getTopology(void) const
|
||||
Py::List vertex;
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = Points.begin();
|
||||
it != Points.end(); ++it)
|
||||
vertex.append(Py::Object(new Base::VectorPy(*it)));
|
||||
vertex.append(Py::asObject(new Base::VectorPy(*it)));
|
||||
tuple.setItem(0, vertex);
|
||||
Py::List facet;
|
||||
for (std::vector<Data::ComplexGeoData::Facet>::const_iterator
|
||||
|
||||
@@ -2095,7 +2095,7 @@ private:
|
||||
if(retType==0)
|
||||
return sret;
|
||||
|
||||
return Py::TupleN(sret,Py::Object(new Base::MatrixPy(new Base::Matrix4D(mat))),
|
||||
return Py::TupleN(sret,Py::asObject(new Base::MatrixPy(new Base::Matrix4D(mat))),
|
||||
subObj?Py::Object(subObj->getPyObject(),true):Py::Object());
|
||||
}
|
||||
|
||||
|
||||
@@ -466,7 +466,7 @@ PyObject* BSplineCurvePy::getPoles(PyObject * args)
|
||||
gp_Pnt pnt = p(i);
|
||||
Base::VectorPy* vec = new Base::VectorPy(Base::Vector3d(
|
||||
pnt.X(), pnt.Y(), pnt.Z()));
|
||||
poles.append(Py::Object(vec));
|
||||
poles.append(Py::asObject(vec));
|
||||
}
|
||||
return Py::new_reference_to(poles);
|
||||
}
|
||||
|
||||
@@ -721,7 +721,7 @@ PyObject* BSplineSurfacePy::getPoles(PyObject *args)
|
||||
Py::List row;
|
||||
for (Standard_Integer j=p.LowerCol(); j<=p.UpperCol(); j++) {
|
||||
const gp_Pnt& pole = p(i,j);
|
||||
row.append(Py::Object(new Base::VectorPy(
|
||||
row.append(Py::asObject(new Base::VectorPy(
|
||||
Base::Vector3d(pole.X(),pole.Y(),pole.Z()))));
|
||||
}
|
||||
poles.append(row);
|
||||
|
||||
@@ -233,7 +233,7 @@ PyObject* BezierCurvePy::getPoles(PyObject * args)
|
||||
gp_Pnt pnt = p(i);
|
||||
Base::VectorPy* vec = new Base::VectorPy(Base::Vector3d(
|
||||
pnt.X(), pnt.Y(), pnt.Z()));
|
||||
poles.append(Py::Object(vec));
|
||||
poles.append(Py::asObject(vec));
|
||||
}
|
||||
return Py::new_reference_to(poles);
|
||||
}
|
||||
|
||||
@@ -510,7 +510,7 @@ PyObject* BezierSurfacePy::getPoles(PyObject *args)
|
||||
Py::List row;
|
||||
for (Standard_Integer j=p.LowerCol(); j<=p.UpperCol(); j++) {
|
||||
const gp_Pnt& pole = p(i,j);
|
||||
row.append(Py::Object(new Base::VectorPy(
|
||||
row.append(Py::asObject(new Base::VectorPy(
|
||||
Base::Vector3d(pole.X(),pole.Y(),pole.Z()))));
|
||||
}
|
||||
poles.append(row);
|
||||
|
||||
@@ -769,7 +769,7 @@ PyObject* GeometryCurvePy::intersectCS(PyObject *args)
|
||||
Py::List points;
|
||||
for (int i = 1; i <= intersector.NbPoints(); i++) {
|
||||
gp_Pnt p = intersector.Point(i);
|
||||
points.append(Py::Object(new PointPy(new GeomPoint(Base::Vector3d(p.X(), p.Y(), p.Z())))));
|
||||
points.append(Py::asObject(new PointPy(new GeomPoint(Base::Vector3d(p.X(), p.Y(), p.Z())))));
|
||||
}
|
||||
Py::List segments;
|
||||
for (int i = 1; i <= intersector.NbSegments(); i++) {
|
||||
|
||||
@@ -1920,7 +1920,7 @@ PyObject* TopoShapePy::tessellate(PyObject *args)
|
||||
Py::List vertex;
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = Points.begin();
|
||||
it != Points.end(); ++it)
|
||||
vertex.append(Py::Object(new Base::VectorPy(*it)));
|
||||
vertex.append(Py::asObject(new Base::VectorPy(*it)));
|
||||
tuple.setItem(0, vertex);
|
||||
Py::List facet;
|
||||
for (std::vector<Data::ComplexGeoData::Facet>::const_iterator
|
||||
@@ -2841,7 +2841,7 @@ Py::Object TopoShapePy::getLocation(void) const
|
||||
mat[2][1] = trf.Value(3,2);
|
||||
mat[2][2] = trf.Value(3,3);
|
||||
mat[2][3] = trf.Value(3,4);
|
||||
return Py::Object(new Base::MatrixPy(mat));
|
||||
return Py::asObject(new Base::MatrixPy(mat));
|
||||
}
|
||||
|
||||
void TopoShapePy::setLocation(Py::Object o)
|
||||
|
||||
@@ -244,7 +244,7 @@ PyObject* CommandPy::setFromGCode(PyObject *args)
|
||||
|
||||
Py::Object CommandPy::getPlacement(void) const
|
||||
{
|
||||
return Py::Object(new Base::PlacementPy(new Base::Placement(getCommandPtr()->getPlacement())));
|
||||
return Py::asObject(new Base::PlacementPy(new Base::Placement(getCommandPtr()->getPlacement())));
|
||||
}
|
||||
|
||||
void CommandPy::setPlacement(Py::Object arg)
|
||||
|
||||
@@ -90,7 +90,7 @@ Py::List PathPy::getCommands(void) const
|
||||
{
|
||||
Py::List list;
|
||||
for(unsigned int i = 0; i < getToolpathPtr()->getSize(); i++)
|
||||
list.append(Py::Object(new Path::CommandPy(new Path::Command(getToolpathPtr()->getCommand(i)))));
|
||||
list.append(Py::asObject(new Path::CommandPy(new Path::Command(getToolpathPtr()->getCommand(i)))));
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
@@ -237,7 +237,7 @@ Py::List PointsPy::getPoints(void) const
|
||||
Py::List PointList;
|
||||
const PointKernel* points = getPointKernelPtr();
|
||||
for (PointKernel::const_point_iterator it = points->begin(); it != points->end(); ++it) {
|
||||
PointList.append(Py::Object(new Base::VectorPy(*it)));
|
||||
PointList.append(Py::asObject(new Base::VectorPy(*it)));
|
||||
}
|
||||
return PointList;
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ void Robot6AxisPy::setAxis6(Py::Float arg)
|
||||
|
||||
Py::Object Robot6AxisPy::getTcp(void) const
|
||||
{
|
||||
return Py::Object(new Base::PlacementPy(new Base::Placement(getRobot6AxisPtr()->getTcp())));
|
||||
return Py::asObject(new Base::PlacementPy(new Base::Placement(getRobot6AxisPtr()->getTcp())));
|
||||
}
|
||||
|
||||
void Robot6AxisPy::setTcp(Py::Object value)
|
||||
|
||||
@@ -154,7 +154,7 @@ Py::List TrajectoryPy::getWaypoints(void) const
|
||||
{
|
||||
Py::List list;
|
||||
for(unsigned int i = 0; i < getTrajectoryPtr()->getSize(); i++)
|
||||
list.append(Py::Object(new Robot::WaypointPy(new Robot::Waypoint(getTrajectoryPtr()->getWaypoint(i)))));
|
||||
list.append(Py::asObject(new Robot::WaypointPy(new Robot::Waypoint(getTrajectoryPtr()->getWaypoint(i)))));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ Py::Tuple SketchPy::getGeometries(void) const
|
||||
|
||||
Py::Object SketchPy::getShape(void) const
|
||||
{
|
||||
return Py::Object(new TopoShapePy(new TopoShape(getSketchPtr()->toShape())));
|
||||
return Py::asObject(new TopoShapePy(new TopoShape(getSketchPtr()->toShape())));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user