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; }