From 93a15ce983c6fdcee7bf69da57ea6c3f298dcfd0 Mon Sep 17 00:00:00 2001 From: Mastificate Date: Fri, 13 Jan 2017 19:28:09 -0500 Subject: [PATCH] added error handling for bezier curves and fixed infinite loop bugs --- src/modules/math/BezierCurve.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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();