Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix various Py::Object leak
  • Loading branch information
realthunder authored and wwmayer committed Oct 8, 2019
1 parent 78999b4 commit 71c5427
Show file tree
Hide file tree
Showing 24 changed files with 40 additions and 40 deletions.
2 changes: 1 addition & 1 deletion src/App/ComplexGeoDataPyImp.cpp
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions src/App/DocumentObjectPyImp.cpp
Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
22 changes: 11 additions & 11 deletions src/App/Expression.cpp
Expand Up @@ -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)))
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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 "
Expand All @@ -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);

Expand All @@ -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) {
Expand Down Expand Up @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions src/App/FeaturePython.cpp
Expand Up @@ -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));

Expand Down Expand Up @@ -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));

Expand Down
2 changes: 1 addition & 1 deletion src/App/PropertyLinks.cpp
Expand Up @@ -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];
Expand Down
2 changes: 1 addition & 1 deletion src/Base/QuantityPyImp.cpp
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/Gui/DocumentPyImp.cpp
Expand Up @@ -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())));
}

Expand Down
4 changes: 2 additions & 2 deletions src/Gui/SplitView3DInventor.cpp
Expand Up @@ -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());
Expand All @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion src/Gui/ViewProviderLinkPyImp.cpp
Expand Up @@ -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())));
}

Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Fem/App/FemMeshPyImp.cpp
Expand Up @@ -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())));

}

Expand Down
4 changes: 2 additions & 2 deletions src/Mod/Mesh/App/MeshPyImp.cpp
Expand Up @@ -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);
}
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/App/AppPartPy.cpp
Expand Up @@ -2095,7 +2095,7 @@ class Module : public Py::ExtensionModule<Module>
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());
}

Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/App/BSplineCurvePyImp.cpp
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/App/BSplineSurfacePyImp.cpp
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/App/BezierCurvePyImp.cpp
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/App/BezierSurfacePyImp.cpp
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/App/GeometryCurvePyImp.cpp
Expand Up @@ -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++) {
Expand Down
4 changes: 2 additions & 2 deletions src/Mod/Part/App/TopoShapePyImp.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Path/App/CommandPyImp.cpp
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Path/App/PathPyImp.cpp
Expand Up @@ -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;
}

Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Points/App/PointsPyImp.cpp
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Robot/App/Robot6AxisPyImp.cpp
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Robot/App/TrajectoryPyImp.cpp
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Sketcher/App/SketchPyImp.cpp
Expand Up @@ -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())));
}


Expand Down

0 comments on commit 71c5427

Please sign in to comment.