summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordon bright <hugh.m.bright@gmail.com>2012-07-20 06:49:27 (GMT)
committerdon bright <hugh.m.bright@gmail.com>2012-07-20 06:49:27 (GMT)
commit4750709867e0f5743934a20250ca0990472b7a4f (patch)
tree7d930147a3123c5329c2a0f44fa7d878b5c89a25
parentc39c430ca0afd93a7b9199292fca5c613384441f (diff)
fix crashbug, rept by MichaelAtOz, issue 148. add test.
-rw-r--r--src/CGALEvaluator.cc4
-rw-r--r--src/CGAL_Nef_polyhedron.h1
-rw-r--r--testdata/scad/dxf/scale-with-0.scad (renamed from testdata/scad/bugs/issue148.scad)1
3 files changed, 4 insertions, 2 deletions
diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc
index a570df4..1b307be 100644
--- a/src/CGALEvaluator.cc
+++ b/src/CGALEvaluator.cc
@@ -253,7 +253,7 @@ Response CGALEvaluator::visit(State &state, const TransformNode &node)
testmat << node.matrix(0,0), node.matrix(0,1), node.matrix(1,0), node.matrix(1,1);
if (testmat.determinant() == 0) {
PRINT("Warning: Scaling a 2D object with 0 - removing object");
- N.p2.reset();
+ N.reset();
}
else {
CGAL_Aff_transformation2 t(
@@ -279,7 +279,7 @@ Response CGALEvaluator::visit(State &state, const TransformNode &node)
else if (N.dim == 3) {
if (node.matrix.matrix().determinant() == 0) {
PRINT("Warning: Scaling a 3D object with 0 - removing object");
- N.p3.reset();
+ N.reset();
}
else {
CGAL_Aff_transformation t(
diff --git a/src/CGAL_Nef_polyhedron.h b/src/CGAL_Nef_polyhedron.h
index 0b0784e..64ee9eb 100644
--- a/src/CGAL_Nef_polyhedron.h
+++ b/src/CGAL_Nef_polyhedron.h
@@ -14,6 +14,7 @@ public:
~CGAL_Nef_polyhedron() {}
bool empty() const { return (dim == 0 || (!p2 && !p3)); }
+ void reset() { dim=0; p2.rest(); p3.reset(); }
CGAL_Nef_polyhedron &operator+=(const CGAL_Nef_polyhedron &other);
CGAL_Nef_polyhedron &operator*=(const CGAL_Nef_polyhedron &other);
CGAL_Nef_polyhedron &operator-=(const CGAL_Nef_polyhedron &other);
diff --git a/testdata/scad/bugs/issue148.scad b/testdata/scad/dxf/scale-with-0.scad
index 29ccd51..c4f6a9d 100644
--- a/testdata/scad/bugs/issue148.scad
+++ b/testdata/scad/dxf/scale-with-0.scad
@@ -1,2 +1,3 @@
+// https://github.com/openscad/openscad/issues/148
scale([8,8,0])
linear_extrude(file="../../circle.dxf");
contact: Jan Huwald // Impressum