diff --git a/src/modules/math/BezierCurve.cpp b/src/modules/math/BezierCurve.cpp index a10b3cf0f..7ada2c554 100644 --- a/src/modules/math/BezierCurve.cpp +++ b/src/modules/math/BezierCurve.cpp @@ -105,6 +105,9 @@ BezierCurve BezierCurve::getDerivative() const const Vector &BezierCurve::getControlPoint(int i) const { + if (controlPoints.size() == 0) + throw Exception("Curve contains no control points."); + while (i < 0) i += controlPoints.size(); @@ -116,6 +119,9 @@ const Vector &BezierCurve::getControlPoint(int i) const void BezierCurve::setControlPoint(int i, const Vector &point) { + if (controlPoints.size() == 0) + throw Exception("Curve contains no control points."); + while (i < 0) i += controlPoints.size(); @@ -127,6 +133,9 @@ void BezierCurve::setControlPoint(int i, const Vector &point) void BezierCurve::insertControlPoint(const Vector &point, int i) { + if (controlPoints.size() == 0) + i = 0; + while (i < 0) i += controlPoints.size(); @@ -138,6 +147,9 @@ void BezierCurve::insertControlPoint(const Vector &point, int i) void BezierCurve::removeControlPoint(int i) { + if (controlPoints.size() == 0) + throw Exception("No control points to remove."); + while (i < 0) i += controlPoints.size();