PVS: V1023 A pointer without owner is added to the container by the 'emplace_back' method. A memory leak will occur in case of an exception.
This commit is contained in:
@@ -1911,7 +1911,7 @@ PyObject* MeshPy::getSegmentsByCurvature(PyObject *args)
|
||||
#else
|
||||
int num = (int)Py::Int(t[4]);
|
||||
#endif
|
||||
segm.emplace_back(new MeshCore::MeshCurvatureFreeformSegment(meshCurv.GetCurvature(), num, tol1, tol2, c1, c2));
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshCurvatureFreeformSegment>(meshCurv.GetCurvature(), num, tol1, tol2, c1, c2));
|
||||
}
|
||||
|
||||
finder.FindSegments(segm);
|
||||
|
||||
@@ -85,21 +85,21 @@ void Segmentation::accept()
|
||||
|
||||
std::vector<MeshCore::MeshSurfaceSegmentPtr> segm;
|
||||
if (ui->groupBoxFree->isChecked()) {
|
||||
segm.emplace_back(new MeshCore::MeshCurvatureFreeformSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshCurvatureFreeformSegment>
|
||||
(meshCurv.GetCurvature(), ui->numFree->value(),
|
||||
ui->tol1Free->value(), ui->tol2Free->value(),
|
||||
ui->crv1Free->value(), ui->crv2Free->value()));
|
||||
}
|
||||
if (ui->groupBoxCyl->isChecked()) {
|
||||
segm.emplace_back(new MeshCore::MeshCurvatureCylindricalSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshCurvatureCylindricalSegment>
|
||||
(meshCurv.GetCurvature(), ui->numCyl->value(), ui->tol1Cyl->value(), ui->tol2Cyl->value(), ui->crvCyl->value()));
|
||||
}
|
||||
if (ui->groupBoxSph->isChecked()) {
|
||||
segm.emplace_back(new MeshCore::MeshCurvatureSphericalSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshCurvatureSphericalSegment>
|
||||
(meshCurv.GetCurvature(), ui->numSph->value(), ui->tolSph->value(), ui->crvSph->value()));
|
||||
}
|
||||
if (ui->groupBoxPln->isChecked()) {
|
||||
segm.emplace_back(new MeshCore::MeshCurvaturePlanarSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshCurvaturePlanarSegment>
|
||||
(meshCurv.GetCurvature(), ui->numPln->value(), ui->tolPln->value()));
|
||||
}
|
||||
finder.FindSegments(segm);
|
||||
|
||||
@@ -427,7 +427,7 @@ void SegmentationBestFit::accept()
|
||||
else {
|
||||
fitter = new MeshCore::CylinderSurfaceFit;
|
||||
}
|
||||
segm.emplace_back(new MeshCore::MeshDistanceGenericSurfaceFitSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshDistanceGenericSurfaceFitSegment>
|
||||
(fitter, kernel, ui->numCyl->value(), ui->tolCyl->value()));
|
||||
}
|
||||
if (ui->groupBoxSph->isChecked()) {
|
||||
@@ -441,7 +441,7 @@ void SegmentationBestFit::accept()
|
||||
else {
|
||||
fitter = new MeshCore::SphereSurfaceFit;
|
||||
}
|
||||
segm.emplace_back(new MeshCore::MeshDistanceGenericSurfaceFitSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshDistanceGenericSurfaceFitSegment>
|
||||
(fitter, kernel, ui->numSph->value(), ui->tolSph->value()));
|
||||
}
|
||||
if (ui->groupBoxPln->isChecked()) {
|
||||
@@ -455,7 +455,7 @@ void SegmentationBestFit::accept()
|
||||
else {
|
||||
fitter = new MeshCore::PlaneSurfaceFit;
|
||||
}
|
||||
segm.emplace_back(new MeshCore::MeshDistanceGenericSurfaceFitSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshDistanceGenericSurfaceFitSegment>
|
||||
(fitter, kernel, ui->numPln->value(), ui->tolPln->value()));
|
||||
}
|
||||
finder.FindSegments(segm);
|
||||
|
||||
@@ -99,7 +99,7 @@ void Segmentation::accept()
|
||||
// First create segments by curavture to get the surface type
|
||||
std::vector<MeshCore::MeshSurfaceSegmentPtr> segm;
|
||||
if (ui->groupBoxPln->isChecked()) {
|
||||
segm.emplace_back(new MeshCore::MeshCurvaturePlanarSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshCurvaturePlanarSegment>
|
||||
(meshCurv.GetCurvature(), ui->numPln->value(), ui->curvTolPln->value()));
|
||||
}
|
||||
finder.FindSegments(segm);
|
||||
@@ -118,7 +118,7 @@ void Segmentation::accept()
|
||||
Base::Vector3f base = fit.GetBase();
|
||||
Base::Vector3f axis = fit.GetNormal();
|
||||
MeshCore::AbstractSurfaceFit* fitter = new MeshCore::PlaneSurfaceFit(base, axis);
|
||||
segmSurf.emplace_back(new MeshCore::MeshDistanceGenericSurfaceFitSegment
|
||||
segmSurf.emplace_back(std::make_shared<MeshCore::MeshDistanceGenericSurfaceFitSegment>
|
||||
(fitter, kernel, ui->numPln->value(), ui->distToPln->value()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ static void findGeometry(int minFaces, double tolerance,
|
||||
MeshCore::MeshSegmentAlgorithm finder(kernel);
|
||||
|
||||
std::vector<MeshCore::MeshSurfaceSegmentPtr> segm;
|
||||
segm.emplace_back(new MeshCore::MeshDistanceGenericSurfaceFitSegment
|
||||
segm.emplace_back(std::make_shared<MeshCore::MeshDistanceGenericSurfaceFitSegment>
|
||||
(surfFit, kernel, minFaces, tolerance));
|
||||
finder.FindSegments(segm);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user