From bf6ff4c8e34700042d5c21a7fc84f18ae7f83bb0 Mon Sep 17 00:00:00 2001 From: Deepak Rangarajan Date: Fri, 14 Aug 2020 18:04:52 -0400 Subject: [PATCH 1/2] Add test to replicate failure --- src/csg/tests/parser/boolean.t.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/csg/tests/parser/boolean.t.cpp b/src/csg/tests/parser/boolean.t.cpp index 8a56351..6b7ff2c 100644 --- a/src/csg/tests/parser/boolean.t.cpp +++ b/src/csg/tests/parser/boolean.t.cpp @@ -119,3 +119,15 @@ multmatrix([[1, 0, 0, 0.5], [0, 1, 0, 0.1], [0, 0, 1, 0], [0, 0, 0, 1]]) { CHECK(cone.radius2 == 0.4); CHECK(cone.center == false); } + +TEST_CASE("mulmat and empty group", "[csg]") { + auto st = *csg::parse_csg(R"( +multmatrix([[0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 0, 1]]) { + cylinder($fn = 0, $fa = 12, $fs = 2, h = 200, r1 = 7, r2 = 7, center = false); +} +group(); +)"); + auto un = std::get(st.top.objs.at(1)); + + CHECK(un.objs.size() == 0); +} -- GitLab From 726ae02b0a0f30997f09b87ed9170e4c63128720 Mon Sep 17 00:00:00 2001 From: Deepak Rangarajan Date: Fri, 14 Aug 2020 18:08:07 -0400 Subject: [PATCH 2/2] Clear current group after its added to mulmatrix --- src/csg/parser.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/csg/parser.cpp b/src/csg/parser.cpp index 53352b4..fca91f2 100644 --- a/src/csg/parser.cpp +++ b/src/csg/parser.cpp @@ -412,6 +412,7 @@ template <> struct action> { for (const auto &curr_obj : st.current_2d_group) { mulmat.group.objs.push_back(curr_obj); } + st.current_2d_group.clear(); st.current_2d_objs.back().push_back(mulmat); st.current_matrices.pop_back(); } @@ -435,6 +436,7 @@ template <> struct action> { for (const auto &curr_obj : st.current_3d_group) { mulmat.group.objs.push_back(curr_obj); } + st.current_3d_group.clear(); st.current_3d_objs.back().push_back(mulmat); st.current_matrices.pop_back(); } -- GitLab