From f6d9b692be8b09ff47a49cea3965f940791830b0 Mon Sep 17 00:00:00 2001 From: tomate44 Date: Sun, 16 Sep 2018 18:17:56 +0200 Subject: [PATCH] add a check to BSplineCurve.segment() --- src/Mod/Part/App/BSplineCurvePyImp.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Mod/Part/App/BSplineCurvePyImp.cpp b/src/Mod/Part/App/BSplineCurvePyImp.cpp index 2768b9ba1b..c72e439d32 100644 --- a/src/Mod/Part/App/BSplineCurvePyImp.cpp +++ b/src/Mod/Part/App/BSplineCurvePyImp.cpp @@ -298,7 +298,15 @@ PyObject* BSplineCurvePy::segment(PyObject * args) try { Handle(Geom_BSplineCurve) curve = Handle(Geom_BSplineCurve)::DownCast (getGeometryPtr()->handle()); - curve->Segment(u1,u2); + Handle(Geom_BSplineCurve) tempCurve = new Geom_BSplineCurve(*curve); + tempCurve->Segment(u1,u2); + if (abs(tempCurve->FirstParameter()-u1)>Precision::Approximation() || abs(tempCurve->LastParameter()-u2)>Precision::Approximation()) { + Standard_Failure::Raise("Failed to segment BSpline curve"); + return 0; + } + else { + curve->Segment(u1,u2); + } Py_Return; } catch (Standard_Failure& e) {