From acace4606beb4c28d06cee0cb45e04f09a62f77d Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Mon, 6 Jan 2014 02:17:03 -0500 Subject: [PATCH] hull-of-hull bug: bugxi and test for exposing it --- src/GeometryEvaluator.cc | 14 +++++----- testdata/scad/features/hull3-tests.scad | 16 ++++++++---- .../cgalpngtest/hull3-tests-expected.png | Bin 11978 -> 12405 bytes .../dumptest/hull3-tests-expected.csg | 24 ++++++++++++++---- .../opencsgtest/hull3-tests-expected.png | Bin 12471 -> 13146 bytes .../hull3-tests-expected.png | Bin 12471 -> 13192 bytes 6 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/GeometryEvaluator.cc b/src/GeometryEvaluator.cc index 603377c6..66308f66 100644 --- a/src/GeometryEvaluator.cc +++ b/src/GeometryEvaluator.cc @@ -54,16 +54,16 @@ shared_ptr GeometryEvaluator::evaluateGeometry(const AbstractNod // If not found in any caches, we need to evaluate the geometry if (N) { this->root = N; - } - else { + } + else { Traverser trav(*this, node, Traverser::PRE_AND_POSTFIX); trav.execute(); + } - if (!allownef) { - if (shared_ptr N = dynamic_pointer_cast(this->root)) { - this->root.reset(N->convertToPolyset()); - smartCache(node, this->root); - } + if (!allownef) { + if (shared_ptr N = dynamic_pointer_cast(this->root)) { + this->root.reset(N->convertToPolyset()); + smartCache(node, this->root); } } return this->root; diff --git a/testdata/scad/features/hull3-tests.scad b/testdata/scad/features/hull3-tests.scad index 0f48b8f2..741ea6c8 100644 --- a/testdata/scad/features/hull3-tests.scad +++ b/testdata/scad/features/hull3-tests.scad @@ -3,12 +3,18 @@ hull(); // No children hull() { } -hull() { - cylinder(r=10, h=1); - translate([0,0,10]) cube([5,5,5], center=true); -} +// Hull of hull (forces internal cache to be initialized; this has caused a crash earlier) +translate([25,0,0]) hull() hull3test(); -translate([25,0,0]) hull() { +module hull3test() { + hull() { + cylinder(r=10, h=1); + translate([0,0,10]) cube([5,5,5], center=true); + } +} +hull3test(); + +translate([50,0,0]) hull() { translate([0,0,10]) cylinder(r=3); difference() { cylinder(r=10, h=4, center=true); diff --git a/tests/regression/cgalpngtest/hull3-tests-expected.png b/tests/regression/cgalpngtest/hull3-tests-expected.png index e34ae893b8a488fb46e3524f6244cc7bacf7652a..ed49e1b0f05d06822343f030db71977b37f494b4 100644 GIT binary patch literal 12405 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 J73<)_{vQqxz=;3= literal 11978 zcmeHtX&_YX8~2$p82d=sWlCAHS0vKRq|zdk3MnMAGfI{$GqxmK3lE`a5k-+*mYEht zS)c3%qwLEV>tMF?9{-Q;*Z0Hw<@w|s=RWs+pX*+&3C17}a-E{DMABNrBYZ9{3x-b+pU#RpEEjFqW-m4cQ-y#D=9 zVJ7yPOwVuiS>ivJaUXhc<`?tDht55B>j``;^d?Eu;ILA~bb3;!0ZQHRaZC?1hHWmyB{d()uy)+*Q(ib8?B(sstQ~ zCSoHHj+b(OYMlmP2vp5kB9JM#{oi~95}TjmZU_y*0&UPEY~Cd}BJUFAkOFjr2BrY$ ziM0j{ZvB4zc`|f^0`6|lP?!e53VW8@wx>f9j}oCLm(LM_%X1;ORiGOLSrH38Ij|oK z9JqI^ToSs0JBy>CC+R!TK)UhEL1=LRrYDHP0#WCLP{eaeoj%aw(6;#g+tz>9`p>ui zi^Tr`;y*b3e~ zcd$d#iEY*&tgIw9Fv4FaN(2_7ZxkS}ixhz-qf9=rhk3Ae67_Bx2~QoVhI(+lBE4I?w01l{8%myS+h7FV9QzY6IKMaay0RjB51Hn*@e7zcowTqG&8(+~ z$F$m9gad=+nq-?%2=Oy$w{^m#MB~1I_0EG!lN(9gT+>*YJ(4|#XY|k_3#VjuXG_WW zW`0${Tfk%9gG_5iBl{DR(*B8J7Tf;d)f;U{3TS)I7kRp zO}}j>!J^Kqp(G+HVxCptxSL_fP`%HbH%uY#_z9W4M3s=QvXAz674!a#9kDYizb>18k;cZqG_vbYCRI2-GjGRsTMLLPeqrx9;OtFIjH} zW#$THiEy3Qg~(qO%eL@CiIH`y%m|k*)kBdZ$2Z0Hn^%F^`8+nCxP6`)DR4f6z_MZo ze>;zJ6s6zN7)x>D(eyy+K4Ae9?>9d1jF3uLaz^ zoGjofge^S9$J(ts23eGx@Lg4_aYiEeE?r*VqXhx;Xk6-j%PYSMc6~FH#Ljr!L80az z@yR>Mtdcr_M*));%nTjYs68$P2AVk59PPABNw+O%=Qf^*msgAi;$aH6oa#&@$wRTW z{+LgsqK&j+obS0VdoEu=8l9kSs0K=Xpd2FNO{Znim#vNoA@}pcU?=oJ6tVU0B+Qm0 z`LHPwcXbX!e54CPJ}_*N3j7tq7aG_ACqxp|V6R+{iHY|gMq|~-mEm}~$ok?_gvXvw z&Y^5U=as=8g1VF~h>uW*A;-@O!B2dCj1&gX^TA``yyXjHBKW@y?vz!-c*%$YuYvfP z`C#)ih1AVqH|A~?HN9r%Y%PnC%<{a@Uq-tys`tO2c#@k zmU0;q%bDj;{ahX~+XP(yjKQqW>|j(ou|&s}ow!!Mpl-{OEaI>{Dh80p<180M(}6&u z;{3ROczajjK`dn1B!DWd@~} zWZJV#C)ByJ7pfz`g?nsnu5}GpxNGo>3V&IoOyO2sP1m*6N+SMGHcZ7Q6+DB$UssN! zgRP98L0#wcaebDAoLO@W^W!qyJaXtQFI%!%nXTx=g?wG)S{B0iv2b6dUdMfivT>H0C z&Ig) z4JiI=@9hJc1UZt}L#w*OGsDB1w>W#UlG*Ka9UoB87K9F@Aj6W0IcC}d!@B1rC{xv7 z%ZD=s_Wd@o)Q960ordLq4hDlVa?6K0M>dz^{dk3~j^JS&dD$wa;3F@ilB=AUK_(`v!4`!Q=&F~H*AbUR z1YQN1OhWj&Q#f1M^d3h<9v`lJ@AMhK7|Z0;K%@2ZOAjPw@_R)S%{<91bC`~|P@ra5 zg?`B|XW8c!qw{=I`2H9se|MB3^3~qX&L9{I#A|g)Mibxcj}~xZ3(YiFgGyC@#+{i2 zXj_Dw^CJm3@+C1Z_bYIO^ObtJh1KS=thpt-^dFQMV$_aMdzL6nxCY{(C~+j zY)Mg{-_;z>FT5^qKH{uYxsP<-;{U;l9d< zigN5t=em8-#zlnO&S)waInGb>6oeff%S=%POxSKQbg(8)FjP`KQbQ{#h<(yJoUXR^ zGM%Mt!Ak-Hn@^bEZfQ>d0RmWJtEas zr53FmxVK`siF{Lp-!w$>)Pw-+v&&r^ALM@AGeFR|ay2+VNf7W=2p0@2onRiJ;>aHw za!og142S7cK^yzLa#u*fSica+ajUV1s6uY;qsgO^NJFL63Buo__%^t&A|h~)wJiPDz7bX+)i8t;~_~bSkMZIxvUH3Md zRK>>+^Omyo$p!XBfA}=ejKfYSlw;@lVRiM)yJS9M3#X^)jI>823d?7CleTgkHt>}B zvGFgHkl)Crf=@VB?xOl4J+&kzB~n_QS>wD{-3O!=5f)xY=x;6bGfBw-OJBIBt<|x7 z0vf)d&j6pZb=3Z53Tb4qGvfFe6y7iMeJ8t!aP~cTS-9bjlq14xC=-QPGY-Dx4h4|6 zpbv>l8~V13<)DXr_-4L@xBPExA_QJndDA|Od9HLIY5oZm3;173IIM7f`!5u+-I}&A z(;vB|{h4G?1?q1}h0R{ixi5IQ5xMhMbvf2S07locp5B-D*`-4wE~pBGLTh5eN^qqu zb$08^bEWo@rZ%IrBO4TKKxZ#LAtL&PHU#X;c>lQfL-^jb=cfYIqTM9Acws^35*DESoi9D3k$O z^!7EB-pzH=WPLYy^coXfJCnNkmfo$BQWC8%Nz~4%?`IN3sD_MNw^5G`Mu$lozx_GC zB>qp3%1f>NhLh`(@!=?tzC%NMh~p;(kaL(PU$W7 zwX`q^$@;!hh@_-?B}CFrll8(ku!2W%Z1-mv4JxR#ilJ~0U_tlS3Nk0FQ$l{cF+ie- z28E-Zt9PowV4new*FKRRx$}M~R1rkrou7E0U%2RWKyIaFn$2&lfY=#RBx{Bw^Vi)8 zXJhuf8iuecZ?;}!=c1xEvZa>@B}FAX4XM3u?A+g$b!`YjWs%dbd*@I~@dVC7e&*fT z@qK{ieS9yS;J)r;$R_PgJA0uzHJU1B5vDQ|!yw&}?ef#Ru3O2a>4V*$Jz7(vq13FC zkqET8+uaaRK)_yTSqlcJx#d8V*%vL4)QT;jFey+7(3zByYK}%1?@Y(-DApBLaB~bm z1&@DTUqlfr2cQUO4eB1`Z749NrBq3LL!I#TI_g+Q2ucsf_brnxU)saO$ef`$)oLpi zaB|RN-%0E3ELGxf5#8IV8XS|8{x&yM@s;g%CL}T zy1fqmR3>a8hCW!RVgc1Rt%WtqOu};bH)m-N_W%4w5Y}xOL)GDoVZzosx#PB#jI|P7 zZ+0&G3Nh^nj%}g3%^ytOGyRU@kc~FhhYg|Yi%gP#tJ{bWj?5=PaOuc=BM?4;;n9xL zU3+g_FD<|C^d66dJ8opHwkGBi_VW_j9|1dXO0Vs}gDq)Vtw0Wz?U>;96>d;fIN-;4-o{j442RXf!Gpo0O92;qHf z`#i(ZsV@Zi`pbI@yKTFOQ?w2)lQPWd%yX_*I5u_9MOs||_97q5JblIJ!)n3dT_>J< z-r-D6Kc`m|ZB&Ew0_t^0>rCe=o*9DDK-NgG@1Y0pGEfN4fZ2x6;H`p^puMX>;R5^)oZ(S2qd9U~=9M$&>mmIEZCFvy2-!L^%PPBnKta$XD8CEc|wkmep; zOR>%Xv}WU=_?aDdz?;Z*MCEdRW4{nw^~^=!hL(ur$DX_It)Yi=&_X7>oim-LE590( zb3;!=lB_15LXpK^e{YEnmNAHnI}oDAp2v`~#div`kL>?L{m#JgnhD0a$FKGN^K~+^ zceg>K2n?<#!!F^jIE*fR?>Ez=)4}1>y5+q4II^?!jMm#X{4jSxMG?+7cFEh+zuW?n ze)wxP16kQmpXH=B6EHhq}fl7Q5EBg9K zyIF6TU=-@X@>fF0odED}M!dneQOuF2N`Gj z5lHHm_f~6lMP6`gja)Z)PE>|xCHb8=1=oWOy*M!M3o_RJ%$2xHr#VX2=krJ7T$m`rU+YwL&p8fu@r0YEzyVv7=?U;k}`6t7lmEd~( zyjN8a;}PUtA$CcRCfbai6N1-E20nVp?uCjsHrGkNnc(FW_g|=t!b4k%AqgGvRHJl$ zd94v4xXbf`#>0~(F->zieJW#0UF!qlRThB2=cJKiP)1aAh%s2P0M;LuDQpNp=^6b^ z5kSHPG-~a&VerRvmJJnrP9d37c?Ed6PI!Jrsq^zRE$aopkLWRHT1+C-@duRkGX3@f zp>5+#Ov#W}K1Biu3gs{KotMX9uS%TLOgCi?RErN9KKTe>}dGZ`d zo8jk=$U8sLGyTRFv`W6qX1hbu`%I!YIsDN0S#ml_+WH^S37$St8<9@l(XaXEh0<55n;i=D$~SMnkvM zO72+BE-w(yov(ukP0kew|3r(hot~OV-6OI#b!7BV?R^`41Wdwov+P;&VYyfSjnlWI z<`a`SuEFfB3QU6dW<<(7nh`H}Am+H^$Olwk|bYJvMqk+PPEO7ng49^IJ% zO8-O_fufN`mv_Njo$3Cd+B8AOZM`$^nRVbG8vW|~4XFC z|Ggt90f$u5HgWYtQzhn8gqlHFa!L41dA0r);}zr%`WuRO*%(8Y&TEJhsHIyHVv0NC z`=dq!*MY4zPkd2(RO^@YJh2~NXzv0f`w{4$7vhI_%6eco7Ah}vs&NvS{4vB+P$5%5 z*#NDAoN0Seh-l{)IE6a}%M$O*ZIh zq?s9>R# z0@LxIIh}+Rhr#i2eS>r`cAS>hOMosQ7IB1Cti|U;8OQhzMBA%^#ZypDXFFWo%mmK~ z3bL2T-X$gauh+D?E;V%igo~xT5`qgT*Ct@~Aq0M)xiP|HWP(4P)11~yp^{BY@H=^# z(?no6z>Yncn_mV7Ukk2067}TGSVR0f0)n{*3tXLOj9?N@-THK+)mX6O7hK5@X_sEm zEIIH3fYnS!mqWFltz7;F2QQvG?xcGv?1Ym&j+_B@Mn#6X=L^cb z>-M%pb(#GYfEPiVJ|d~x$hETP+OE(8Mq%y0;2%$#l_Sx55XL8wmpyFYt1-ka`@GE; zz*g>sh?4Rb5dCY8$v{CJz|Q4O>Iwq3ITL(vq}E9ykRw>jSY~W3``YcDKb5EVX;`a^ zgGTc=Z(hWU!Y^fA5{OEKwBuq8BNIx&#_y(M(fdULtDdJuE;zWisuQtLuLN06?Y1u{ z^$g?wrJl9*v?|uZp?8r*9RIr%S30E<( zkdi9HQUzi0uiVf`AIM_Eun`IP;xUtm^hQ>$->uD`FbUv+;QgP$W~eS2U8oPrgA z2wBt{NQ3ifAOaPh*Xx1|kRC7ZL3JrA*ggtt_%&aXyBIlp;}5NTJZx>;$;ja}3~>&c z>%lShG;MyE?tz`2ZJ`KJ34%aDh^hcA;XGlcX^tRV$xes1Woj-$>H3zQE;{!H^kZ|}z%YzYC8#eN7GfTNv{`DPC3!;f@`51ipTK~~dyAd^f zf3kuTgLZFv=m_nQ=pWX{iWLTiwT6%CgA|M2QSi`~=-7KqM5Dn(eXAO2&Brm0nvVe| zemr^=H6Kj-xlrJ`l^eRquCA+GGvA@}ziyTQ8+wNg1d}fuu&P&3d0I-MZ9XB9l%1QRN?Tj-2z)jArU5}qiw2hWT zs-zC#$edH8*_PiJ_^=AX7*WsP1ADr(Y{D>gnrT8hmkwy?XNCi)`_DPz9)%{;23^(> zw-I=nrlav0PtH^U2D22bsLdVkI(9103XAA+zq8oUkUFaMWG|nYc2g<(*s=WrX6wSW z8%xwhUx$_FY6AbP1VyEJpC<_KcSFrUs2HK@89en9+ikux=2CiI`EbFLc6GPePGY_~ z+!P9s_)#`2jjM6Jw~@-=$=`A-IUK8hK5E4EJ1&pQYH_zstty2V(387S z;$or^$P&%7r8ARX0>hE`Nm9g>ObwvB0~lRrnmo@@c_)b3g0nPtF+@=FYHvguN%q=`mfc!y+`o< zHdOKq0-Yg-ubkZ%dNGs7q{%(& zfiITT{1sj!y5t0lnw=1ax>=3%vyL8h!OK_O0}m@$q3jZ&SrZqqbr(g|zxo>YaUrmf ziBf_9K`GBE@f^yy*ycM#glK~9S>^ddSN zfVG@{2j6bFfDqaGfwFxR^r9=|EQ2kVx4Zd%K`ny6mQ*yiU-W^(LE*XZ_S$j~<;z97 z@%$V Rp&oVM>?zBWpH4VO{~zYWWU~MO diff --git a/tests/regression/dumptest/hull3-tests-expected.csg b/tests/regression/dumptest/hull3-tests-expected.csg index a15f0cec..71a88389 100644 --- a/tests/regression/dumptest/hull3-tests-expected.csg +++ b/tests/regression/dumptest/hull3-tests-expected.csg @@ -1,13 +1,27 @@ group() { hull(); hull(); - hull() { - cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 10, r2 = 10, center = false); - multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 10], [0, 0, 0, 1]]) { - cube(size = [5, 5, 5], center = true); + multmatrix([[1, 0, 0, 25], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) { + hull() { + group() { + hull() { + cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 10, r2 = 10, center = false); + multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 10], [0, 0, 0, 1]]) { + cube(size = [5, 5, 5], center = true); + } + } + } } } - multmatrix([[1, 0, 0, 25], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) { + group() { + hull() { + cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 10, r2 = 10, center = false); + multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 10], [0, 0, 0, 1]]) { + cube(size = [5, 5, 5], center = true); + } + } + } + multmatrix([[1, 0, 0, 50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) { hull() { multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 10], [0, 0, 0, 1]]) { cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = false); diff --git a/tests/regression/opencsgtest/hull3-tests-expected.png b/tests/regression/opencsgtest/hull3-tests-expected.png index 5a363a15a8abe6b5ef16c887f8290d35f5298674..13e47fc4e8eac6cbff6e68044bb2e6c014f92d82 100644 GIT binary patch literal 13146 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 S2=a#n;JE3@qxpwjqyG=65SR}D diff --git a/tests/regression/throwntogethertest/hull3-tests-expected.png b/tests/regression/throwntogethertest/hull3-tests-expected.png index 5a363a15a8abe6b5ef16c887f8290d35f5298674..087d8339dcbe288ea575c12ba28b8510905cfaea 100644 GIT binary patch literal 13192 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 S2=a#n;JE3@qxpwjqyG=65SR}D