diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-24 17:40:19 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-24 17:40:19 (GMT) |
commit | cf15ce518535837fa993ce9a6c631e6c5755165a (patch) | |
tree | f68e77b706292de4b52d1c38f19e86ce7d487d93 | |
parent | 65c7db49c97ee3b0f79ffdd10a7396c3d7fb82a3 (diff) |
Clifford Wolf:
Fixed CSG product normalization
git-svn-id: http://svn.clifford.at/openscad/trunk@17 b57f626f-c46c-0410-a088-ec61d464b74c
-rw-r--r-- | csgterm.cc | 6 | ||||
-rw-r--r-- | mainwin.cc | 9 |
2 files changed, 9 insertions, 6 deletions
@@ -69,11 +69,13 @@ CSGTerm *CSGTerm::normalize() y->unlink(); } - do { + while (1) { t2 = t1->normalize_tail(); t1->unlink(); + if (t1 == t2) + break; t1 = t2; - } while (t1 != t2); + } return t1; } @@ -265,12 +265,13 @@ void MainWindow::actionCompile() root_norm_term = root_raw_term->link(); - CSGTerm *n; - do { - n = root_norm_term->normalize(); + while (1) { + CSGTerm *n = root_norm_term->normalize(); root_norm_term->unlink(); + if (root_norm_term == n) + break; root_norm_term = n; - } while (root_norm_term != n); + } if (!root_norm_term) { console->append("Compilation failed!"); |