From b51d11d0434955dc5863d5b49a8d9423d9b2bce0 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 1 Jul 2010 21:24:39 +0000 Subject: [PATCH] catch a few error conditions for extrudes and polygons git-svn-id: svn://anubis/fart/trunk@271 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- main/Scene-load.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/main/Scene-load.cc b/main/Scene-load.cc index 69b657e..a8d077a 100644 --- a/main/Scene-load.cc +++ b/main/Scene-load.cc @@ -569,6 +569,11 @@ refptr Scene::processExtrude(refptr node) else if ( typeid(**it) == typeid(OffsetNode) ) { double distance = (*it)->getNumber(); + if (distance <= 0.0) + { + cerr << "Error: extrude distance must be positive" << endl; + exit(3); + } Vector scale(1, 1, 1); Vector position(0, 0, 0); for (Node_Iterator it2 = (*it)->getChildren().begin(); @@ -584,6 +589,11 @@ refptr Scene::processExtrude(refptr node) position = * (*it2)->getVector(); } } + if (scale[0] < 0.0 || scale[1] < 0.0) + { + cerr << "Error: extrude scale cannot be negative" << endl; + exit(3); + } extrude->addOffset(distance, scale, position); } else if ( (*it)->isMaterial() ) @@ -619,6 +629,11 @@ refptr Scene::processPolygon(refptr node) exit(3); } } + if (p->size() < 3) + { + cerr << "Error: Polygon with fewer than three points!" << endl; + exit(3); + } return p; }