[brlcad-commits] SF.net SVN: brlcad:[47362] brlcad/trunk/src/conv/g-x3d.c
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2011-10-30 01:51:05
|
Revision: 47362 http://brlcad.svn.sourceforge.net/brlcad/?rev=47362&view=rev Author: brlcad Date: 2011-10-30 01:50:58 +0000 (Sun, 30 Oct 2011) Log Message: ----------- restructure bu exception handling into try/catch form, make 'reg' also be static in order to avoid gcc longjmp clobbering Modified Paths: -------------- brlcad/trunk/src/conv/g-x3d.c Modified: brlcad/trunk/src/conv/g-x3d.c =================================================================== --- brlcad/trunk/src/conv/g-x3d.c 2011-10-30 01:50:00 UTC (rev 47361) +++ brlcad/trunk/src/conv/g-x3d.c 2011-10-30 01:50:58 UTC (rev 47362) @@ -535,13 +535,13 @@ void process_non_light(struct model *m) { - struct nmgregion *reg; /* static due to bu exception handling */ static struct shell *s; static struct shell *next_s; static struct faceuse *fu; static struct faceuse *next_fu; static struct loopuse *lu; + static struct nmgregion *reg; /* triangulate any faceuses with holes */ for ( BU_LIST_FOR( reg, nmgregion, &m->r_hd ) ) @@ -556,7 +556,6 @@ while ( BU_LIST_NOT_HEAD( &fu->l, &s->fu_hd ) ) { int shell_is_dead=0; - int face_is_dead=0; NMG_CK_FACEUSE( fu ); @@ -577,9 +576,12 @@ /* this is a hole, so * triangulate the faceuse */ - if ( BU_SETJUMP ) + if ( !BU_SETJUMP ) { - BU_UNSETJUMP; + /* try */ + nmg_triangulate_fu( fu, &tol ); + } else { + /* catch */ bu_log( "A face has failed triangulation!\n" ); if ( next_fu == fu->fumate_p ) next_fu = BU_LIST_PNEXT( faceuse, &next_fu->l ); @@ -588,11 +590,7 @@ (void) nmg_ks( s ); shell_is_dead = 1; } - face_is_dead = 1; - } - if ( !face_is_dead ) - nmg_triangulate_fu( fu, &tol ); - BU_UNSETJUMP; + } BU_UNSETJUMP; break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |