Revision: 45803
          http://brlcad.svn.sourceforge.net/brlcad/?rev=45803&view=rev
Author:   brlcad
Date:     2011-08-06 00:36:50 +0000 (Sat, 06 Aug 2011)

Log Message:
-----------
even further reduction of about 70 lines.  code went a wee bit nuts with 
dynamic memory allocation.  simplify, put objects on the stack.

Modified Paths:
--------------
    brlcad/trunk/src/proc-db/csgbrep.cpp

Modified: brlcad/trunk/src/proc-db/csgbrep.cpp
===================================================================
--- brlcad/trunk/src/proc-db/csgbrep.cpp        2011-08-06 00:33:40 UTC (rev 
45802)
+++ brlcad/trunk/src/proc-db/csgbrep.cpp        2011-08-06 00:36:50 UTC (rev 
45803)
@@ -24,7 +24,6 @@
 #include "rtgeom.h"
 #include "wdb.h"
 
-extern struct rt_sketch_internal *sketch_start();
 
 #define OBJ_BREP
 /* without OBJ_BREP, this entire procedural example is disabled */
@@ -61,7 +60,7 @@
     brep = ON_Brep::New();
     ip->idb_meth->ft_brep(&brep, ip, tol);
     mk_brep(fp, bname.c_str(), brep);
-    delete brep; 
+    // delete brep; 
 }
 
 
@@ -69,9 +68,7 @@
 main(int argc, char** argv)
 {
     struct rt_wdb* outfp;
-    struct rt_db_internal tmp_internal; /* = (struct rt_db_internal *) 
bu_calloc(1, sizeof(struct rt_db_internal), "allocate structure"); !!! */
-    point_t center;
-    vect_t a, b, c, h, N;
+    struct rt_db_internal tmp_internal;
     ON_TextLog error_log;
 
     RT_DB_INTERNAL_INIT(&tmp_internal);
@@ -93,118 +90,105 @@
     mk_id(outfp, id_name);
 
     bu_log("ARB4\n");
-    struct rt_arb_internal *arb4;
-    BU_GETSTRUCT(arb4, rt_arb_internal);
-    arb4->magic = RT_ARB_INTERNAL_MAGIC;
-    VSET(arb4->pt[0], 1000, -1000, -1000);
-    VSET(arb4->pt[1], 1000, 1000, -1000);
-    VSET(arb4->pt[2], 1000, 1000, 1000);
-    VSET(arb4->pt[3], 1000, 1000, 1000);
-    VSET(arb4->pt[4], -1000, 1000, -1000);
-    VSET(arb4->pt[5], -1000, 1000, -1000);
-    VSET(arb4->pt[6], -1000, 1000, -1000);
-    VSET(arb4->pt[7], -1000, 1000, -1000);
-    tmp_internal.idb_ptr = (genptr_t)arb4;
+    struct rt_arb_internal arb4;
+    arb4.magic = RT_ARB_INTERNAL_MAGIC;
+    VSET(arb4.pt[0], 1000, -1000, -1000);
+    VSET(arb4.pt[1], 1000, 1000, -1000);
+    VSET(arb4.pt[2], 1000, 1000, 1000);
+    VSET(arb4.pt[3], 1000, 1000, 1000);
+    VSET(arb4.pt[4], -1000, 1000, -1000);
+    VSET(arb4.pt[5], -1000, 1000, -1000);
+    VSET(arb4.pt[6], -1000, 1000, -1000);
+    VSET(arb4.pt[7], -1000, 1000, -1000);
+    tmp_internal.idb_ptr = (genptr_t)&arb4;
     tmp_internal.idb_meth = &rt_functab[ID_ARB8];
     write_out(outfp, &tmp_internal, "arb4", &tol);
  
     bu_log("ARB5\n");
-    struct rt_arb_internal *arb5;
-    BU_GETSTRUCT(arb5, rt_arb_internal);
-    arb5->magic = RT_ARB_INTERNAL_MAGIC;
-    VSET(arb5->pt[0], 1000, -1000, -1000);
-    VSET(arb5->pt[1], 1000, 1000, -1000);
-    VSET(arb5->pt[2], 1000, 1000, 1000);
-    VSET(arb5->pt[3], 1000, -1000, 1000);
-    VSET(arb5->pt[4], -1000, 0, 0);
-    VSET(arb5->pt[5], -1000, 0, 0);
-    VSET(arb5->pt[6], -1000, 0, 0);
-    VSET(arb5->pt[7], -1000, 0, 0);
-    tmp_internal.idb_ptr = (genptr_t)arb5;
+    struct rt_arb_internal arb5;
+    arb5.magic = RT_ARB_INTERNAL_MAGIC;
+    VSET(arb5.pt[0], 1000, -1000, -1000);
+    VSET(arb5.pt[1], 1000, 1000, -1000);
+    VSET(arb5.pt[2], 1000, 1000, 1000);
+    VSET(arb5.pt[3], 1000, -1000, 1000);
+    VSET(arb5.pt[4], -1000, 0, 0);
+    VSET(arb5.pt[5], -1000, 0, 0);
+    VSET(arb5.pt[6], -1000, 0, 0);
+    VSET(arb5.pt[7], -1000, 0, 0);
+    tmp_internal.idb_ptr = (genptr_t)&arb5;
     tmp_internal.idb_meth = &rt_functab[ID_ARB8];
     write_out(outfp, &tmp_internal, "arb5", &tol);
  
     bu_log("ARB6\n");
-    struct rt_arb_internal *arb6;
-    BU_GETSTRUCT(arb6, rt_arb_internal);
-    arb6->magic = RT_ARB_INTERNAL_MAGIC;
-    VSET(arb6->pt[0], 1000, -1000, -1000);
-    VSET(arb6->pt[1], 1000, 1000, -1000);
-    VSET(arb6->pt[2], 1000, 1000, 1000);
-    VSET(arb6->pt[3], 1000, -1000, 1000);
-    VSET(arb6->pt[4], -1000, 0, -1000);
-    VSET(arb6->pt[5], -1000, 0, -1000);
-    VSET(arb6->pt[6], -1000, 0, 1000);
-    VSET(arb6->pt[7], -1000, 0, 1000);
-    tmp_internal.idb_ptr = (genptr_t)arb6;
+    struct rt_arb_internal arb6;
+    arb6.magic = RT_ARB_INTERNAL_MAGIC;
+    VSET(arb6.pt[0], 1000, -1000, -1000);
+    VSET(arb6.pt[1], 1000, 1000, -1000);
+    VSET(arb6.pt[2], 1000, 1000, 1000);
+    VSET(arb6.pt[3], 1000, -1000, 1000);
+    VSET(arb6.pt[4], -1000, 0, -1000);
+    VSET(arb6.pt[5], -1000, 0, -1000);
+    VSET(arb6.pt[6], -1000, 0, 1000);
+    VSET(arb6.pt[7], -1000, 0, 1000);
+    tmp_internal.idb_ptr = (genptr_t)&arb6;
     tmp_internal.idb_meth = &rt_functab[ID_ARB8];
     write_out(outfp, &tmp_internal, "arb6", &tol);
  
     bu_log("ARB7\n");
-    struct rt_arb_internal *arb7;
-    BU_GETSTRUCT(arb7, rt_arb_internal);
-    arb7->magic = RT_ARB_INTERNAL_MAGIC;
-    VSET(arb7->pt[0], 1000, -1000, -500);
-    VSET(arb7->pt[1], 1000, 1000, -500);
-    VSET(arb7->pt[2], 1000, 1000, 1500);
-    VSET(arb7->pt[3], 1000, -1000, 500);
-    VSET(arb7->pt[4], -1000, -1000, -500);
-    VSET(arb7->pt[5], -1000, 1000, -500);
-    VSET(arb7->pt[6], -1000, 1000, 500);
-    VSET(arb7->pt[7], -1000, -1000, -500);
-    tmp_internal.idb_ptr = (genptr_t)arb7;
+    struct rt_arb_internal arb7;
+    arb7.magic = RT_ARB_INTERNAL_MAGIC;
+    VSET(arb7.pt[0], 1000, -1000, -500);
+    VSET(arb7.pt[1], 1000, 1000, -500);
+    VSET(arb7.pt[2], 1000, 1000, 1500);
+    VSET(arb7.pt[3], 1000, -1000, 500);
+    VSET(arb7.pt[4], -1000, -1000, -500);
+    VSET(arb7.pt[5], -1000, 1000, -500);
+    VSET(arb7.pt[6], -1000, 1000, 500);
+    VSET(arb7.pt[7], -1000, -1000, -500);
+    tmp_internal.idb_ptr = (genptr_t)&arb7;
     tmp_internal.idb_meth = &rt_functab[ID_ARB8];
     write_out(outfp, &tmp_internal, "arb7", &tol);
  
     bu_log("ARB8\n");
-    struct rt_arb_internal *arb8;
-    BU_GETSTRUCT(arb8, rt_arb_internal);
-    arb8->magic = RT_ARB_INTERNAL_MAGIC;
-    VSET(arb8->pt[0], 1015, -1000, -995);
-    VSET(arb8->pt[1], 1015, 1000, -995);
-    VSET(arb8->pt[2], 1015, 1000, 1005);
-    VSET(arb8->pt[3], 1015, -1000, 1005);
-    VSET(arb8->pt[4], -985, -1000, -995);
-    VSET(arb8->pt[5], -985, 1000, -995);
-    VSET(arb8->pt[6], -985, 1000, 1005);
-    VSET(arb8->pt[7], -985, -1000, 1005);
-    tmp_internal.idb_ptr = (genptr_t)arb8;
+    struct rt_arb_internal arb8;
+    arb8.magic = RT_ARB_INTERNAL_MAGIC;
+    VSET(arb8.pt[0], 1015, -1000, -995);
+    VSET(arb8.pt[1], 1015, 1000, -995);
+    VSET(arb8.pt[2], 1015, 1000, 1005);
+    VSET(arb8.pt[3], 1015, -1000, 1005);
+    VSET(arb8.pt[4], -985, -1000, -995);
+    VSET(arb8.pt[5], -985, 1000, -995);
+    VSET(arb8.pt[6], -985, 1000, 1005);
+    VSET(arb8.pt[7], -985, -1000, 1005);
+    tmp_internal.idb_ptr = (genptr_t)&arb8;
     tmp_internal.idb_meth = &rt_functab[ID_ARB8];
     write_out(outfp, &tmp_internal, "arb8", &tol);
     
     bu_log("ARBN\n");
-    struct rt_db_internal arbninternal;
-    RT_DB_INTERNAL_INIT(&arbninternal);
-    arbninternal.idb_type = ID_ARBN;
-    arbninternal.idb_meth = &rt_functab[ID_ARBN];
-    arbninternal.idb_ptr = (genptr_t)bu_malloc(sizeof(struct 
rt_arbn_internal), "rt_arbn_internal");
-    struct rt_arbn_internal *arbn;
-    arbn = (struct rt_arbn_internal *)arbninternal.idb_ptr;
-    arbn->magic = RT_ARBN_INTERNAL_MAGIC;
-    arbn->neqn = 8;
-    arbn->eqn = (plane_t *)bu_calloc(arbn->neqn,sizeof(plane_t), "arbn plane 
eqns");
-    VSET(arbn->eqn[0], 1, 0, 0);
-    arbn->eqn[0][3] = 1000;
-    VSET(arbn->eqn[1], -1, 0, 0);
-    arbn->eqn[1][3] = 1000;
-    VSET(arbn->eqn[2], 0, 1, 0);
-    arbn->eqn[2][3] = 1000;
-    VSET(arbn->eqn[3], 0, -1, 0);
-    arbn->eqn[3][3] = 1000;
-    VSET(arbn->eqn[4], 0, 0, 1);
-    arbn->eqn[4][3] = 1000;
-    VSET(arbn->eqn[5], 0, 0, -1);
-    arbn->eqn[5][3] = 1000;
-    VSET(arbn->eqn[6], 0.57735, 0.57735, 0.57735);
-    arbn->eqn[6][3] = 1000;
-    VSET(arbn->eqn[7], -0.57735, -0.57735, -0.57735);
-    arbn->eqn[7][3] = 1000;
-    tmp_internal.idb_ptr = (genptr_t)arbn;
+    struct rt_arbn_internal arbn;
+    arbn.magic = RT_ARBN_INTERNAL_MAGIC;
+    arbn.neqn = 8;
+    arbn.eqn = (plane_t *)bu_calloc(arbn.neqn, sizeof(plane_t), "arbn plane 
eqns");
+    VSET(arbn.eqn[0], 1, 0, 0);
+    arbn.eqn[0][3] = 1000;
+    VSET(arbn.eqn[1], -1, 0, 0);
+    arbn.eqn[1][3] = 1000;
+    VSET(arbn.eqn[2], 0, 1, 0);
+    arbn.eqn[2][3] = 1000;
+    VSET(arbn.eqn[3], 0, -1, 0);
+    arbn.eqn[3][3] = 1000;
+    VSET(arbn.eqn[4], 0, 0, 1);
+    arbn.eqn[4][3] = 1000;
+    VSET(arbn.eqn[5], 0, 0, -1);
+    arbn.eqn[5][3] = 1000;
+    VSET(arbn.eqn[6], 0.57735, 0.57735, 0.57735);
+    arbn.eqn[6][3] = 1000;
+    VSET(arbn.eqn[7], -0.57735, -0.57735, -0.57735);
+    arbn.eqn[7][3] = 1000;
+    tmp_internal.idb_ptr = (genptr_t)&arbn;
     tmp_internal.idb_meth = &rt_functab[ID_ARBN];
     write_out(outfp, &tmp_internal, "arbn", &tol);
-
-    bu_free(arbn->eqn, "free arbn eqn");
-    bu_free(arbninternal.idb_ptr, "free arbn");
+    bu_free(arbn.eqn, "free arbn eqn");
   
     // This routine does explicitly what is done
     // by the previous ARB8 brep call internally.
@@ -212,174 +196,151 @@
     // and fed to rt_nmg_brep rather than using an
     // ARB8 as a starting point.
     bu_log("NMG\n");
-    struct rt_arb_internal *arbnmg8;
-    BU_GETSTRUCT(arbnmg8, rt_arb_internal);
-    arbnmg8->magic = RT_ARB_INTERNAL_MAGIC;
-    VSET(arbnmg8->pt[0], 0,0,0);
-    VSET(arbnmg8->pt[1], 0,2000,0);
-    VSET(arbnmg8->pt[2], 0,2000,2000);
-    VSET(arbnmg8->pt[3], 0,0,2000);
-    VSET(arbnmg8->pt[4], -2000,0, 0);
-    VSET(arbnmg8->pt[5], -2000,2000,0);
-    VSET(arbnmg8->pt[6], -2000,2000,2000);
-    VSET(arbnmg8->pt[7], -2000,0,2000);
-    tmp_internal.idb_ptr = (genptr_t)arbnmg8;
+    struct rt_arb_internal arbnmg8;
+    arbnmg8.magic = RT_ARB_INTERNAL_MAGIC;
+    VSET(arbnmg8.pt[0], 0,0,0);
+    VSET(arbnmg8.pt[1], 0,2000,0);
+    VSET(arbnmg8.pt[2], 0,2000,2000);
+    VSET(arbnmg8.pt[3], 0,0,2000);
+    VSET(arbnmg8.pt[4], -2000,0, 0);
+    VSET(arbnmg8.pt[5], -2000,2000,0);
+    VSET(arbnmg8.pt[6], -2000,2000,2000);
+    VSET(arbnmg8.pt[7], -2000,0,2000);
+    tmp_internal.idb_ptr = (genptr_t)&arbnmg8;
+
     // Now, need nmg form of the arb
     struct model *m = nmg_mm();
     struct nmgregion *r;
     struct rt_tess_tol ttol;
-    ttol.abs = 0;
+    ttol.abs = 0.0;
     ttol.rel = 0.01;
-    ttol.norm = 0;
-    tmp_internal.idb_ptr = (genptr_t)arbnmg8;
+    ttol.norm = 0.0;
+    tmp_internal.idb_ptr = (genptr_t)&arbnmg8;
     tmp_internal.idb_meth = &rt_functab[ID_ARB8];
     tmp_internal.idb_meth->ft_tessellate(&r, m, &tmp_internal, &ttol, &tol);
-    tmp_internal.idb_ptr = (genptr_t)m;
+
+    tmp_internal.idb_ptr = m;
     tmp_internal.idb_meth = &rt_functab[ID_NMG];
     write_out(outfp, &tmp_internal, "nmg", &tol);
-
     FREE_MODEL(m);
     
     bu_log("SPH\n");
-    struct rt_ell_internal *sph;
-    BU_GETSTRUCT(sph, rt_ell_internal);
-    sph->magic = RT_ELL_INTERNAL_MAGIC;
-    VSET(center, 0, 0, 0);
-    VSET(a, 5, 0, 0);
-    VSET(b, 0, 5, 0);
-    VSET(c, 0, 0, 5); 
-    VMOVE(sph->v, center);
-    VMOVE(sph->a, a);
-    VMOVE(sph->b, b);
-    VMOVE(sph->c, c);
-    tmp_internal.idb_ptr = (genptr_t)sph;
+    struct rt_ell_internal sph;
+    sph.magic = RT_ELL_INTERNAL_MAGIC;
+    VSET(sph.v, 0.0, 0.0, 0.0);
+    VSET(sph.a, 5.0, 0.0, 0.0);
+    VSET(sph.b, 0.0, 5.0, 0.0);
+    VSET(sph.c, 0.0, 0.0, 5.0);
+    tmp_internal.idb_ptr = (genptr_t)&sph;
     tmp_internal.idb_meth = &rt_functab[ID_SPH];
     write_out(outfp, &tmp_internal, "sph", &tol);
 
     bu_log("ELL\n");
-    struct rt_ell_internal *ell;
-    BU_GETSTRUCT(ell, rt_ell_internal);
-    ell->magic = RT_ELL_INTERNAL_MAGIC;
-    VSET(center, 0, 0, 0);
-    VSET(a, 5, 0, 0);
-    VSET(b, 0, 3, 0);
-    VSET(c, 0, 0, 1); 
-    VMOVE(ell->v, center);
-    VMOVE(ell->a, a);
-    VMOVE(ell->b, b);
-    VMOVE(ell->c, c);
-    tmp_internal.idb_ptr = (genptr_t)ell;
+    struct rt_ell_internal ell;
+    ell.magic = RT_ELL_INTERNAL_MAGIC;
+    VSET(ell.v, 0.0, 0.0, 0.0);
+    VSET(ell.a, 5.0, 0.0, 0.0);
+    VSET(ell.b, 0.0, 3.0, 0.0);
+    VSET(ell.c, 0.0, 0.0, 1.0);
+    tmp_internal.idb_ptr = (genptr_t)ℓ
     tmp_internal.idb_meth = &rt_functab[ID_ELL];
     write_out(outfp, &tmp_internal, "ell", &tol);
     
     bu_log("RHC\n");
-    struct rt_rhc_internal *rhc;
-    BU_GETSTRUCT(rhc, rt_rhc_internal);
-    rhc->rhc_magic = RT_RHC_INTERNAL_MAGIC;
-    VSET(rhc->rhc_V, 0, 0, 0);
-    VSET(rhc->rhc_H, 0, 2000, 0);
-    VSET(rhc->rhc_B, 0, 0, 2000);
-    rhc->rhc_r = 1000;
-    rhc->rhc_c = 400;
-    tmp_internal.idb_ptr = (genptr_t)rhc;
+    struct rt_rhc_internal rhc;
+    rhc.rhc_magic = RT_RHC_INTERNAL_MAGIC;
+    VSET(rhc.rhc_V, 0.0, 0.0, 0.0);
+    VSET(rhc.rhc_H, 0.0, 2000.0, 0.0);
+    VSET(rhc.rhc_B, 0.0, 0.0, 2000.0);
+    rhc.rhc_r = 1000.0;
+    rhc.rhc_c = 400.0;
+    tmp_internal.idb_ptr = (genptr_t)&rhc;
     tmp_internal.idb_meth = &rt_functab[ID_RHC];
     write_out(outfp, &tmp_internal, "rhc", &tol);
 
     bu_log("RPC\n");
-    struct rt_rpc_internal *rpc;
-    BU_GETSTRUCT(rpc, rt_rpc_internal);
-    rpc->rpc_magic = RT_RPC_INTERNAL_MAGIC;
-    VSET(rpc->rpc_V, 24, -1218, -1000);
-    VSET(rpc->rpc_H, 60, 2000, -100);
-    VCROSS(rpc->rpc_B, rpc->rpc_V, rpc->rpc_H);
-    VUNITIZE(rpc->rpc_B);
-    VSCALE(rpc->rpc_B, rpc->rpc_B, 2000);
-    rpc->rpc_r = 1000;
-    tmp_internal.idb_ptr = (genptr_t)rpc;
+    struct rt_rpc_internal rpc;
+    rpc.rpc_magic = RT_RPC_INTERNAL_MAGIC;
+    VSET(rpc.rpc_V, 24.0, -1218.0, -1000.0);
+    VSET(rpc.rpc_H, 60.0, 2000.0, -100.0);
+    VCROSS(rpc.rpc_B, rpc.rpc_V, rpc.rpc_H);
+    VUNITIZE(rpc.rpc_B);
+    VSCALE(rpc.rpc_B, rpc.rpc_B, 2000.0);
+    rpc.rpc_r = 1000.0;
+    tmp_internal.idb_ptr = (genptr_t)&rpc;
     tmp_internal.idb_meth = &rt_functab[ID_RPC];
     write_out(outfp, &tmp_internal, "rpc", &tol);
 
     bu_log("EPA\n");
-    struct rt_epa_internal *epa;
-    BU_GETSTRUCT(epa, rt_epa_internal);
-    epa->epa_magic = RT_EPA_INTERNAL_MAGIC;
-    VSET(epa->epa_V, 0, 0, 0);
-    VSET(epa->epa_H, 0, 0, 2000);
-    VSET(epa->epa_Au, 1, 0, 0);
-    epa->epa_r1 = 1000;
-    epa->epa_r2 = 500;
-    tmp_internal.idb_ptr = (genptr_t)epa;
+    struct rt_epa_internal epa;
+    epa.epa_magic = RT_EPA_INTERNAL_MAGIC;
+    VSET(epa.epa_V, 0.0, 0.0, 0.0);
+    VSET(epa.epa_H, 0.0, 0.0, 2000.0);
+    VSET(epa.epa_Au, 1.0, 0.0, 0.0);
+    epa.epa_r1 = 1000.0;
+    epa.epa_r2 = 500.0;
+    tmp_internal.idb_ptr = (genptr_t)&epa;
     tmp_internal.idb_meth = &rt_functab[ID_EPA];
     write_out(outfp, &tmp_internal, "epa", &tol);
 
     bu_log("EHY\n");
-    struct rt_ehy_internal *ehy;
-    BU_GETSTRUCT(ehy, rt_ehy_internal);
-    ehy->ehy_magic = RT_EHY_INTERNAL_MAGIC;
-    VSET(ehy->ehy_V, 0, 0, 0);
-    VSET(ehy->ehy_H, 0, 0, 2000);
-    VSET(ehy->ehy_Au, 1, 0, 0);
-    ehy->ehy_r1 = 1000;
-    ehy->ehy_r2 = 500;
-    ehy->ehy_c = 400;
-    tmp_internal.idb_ptr = (genptr_t)ehy;
+    struct rt_ehy_internal ehy;
+    ehy.ehy_magic = RT_EHY_INTERNAL_MAGIC;
+    VSET(ehy.ehy_V, 0, 0, 0);
+    VSET(ehy.ehy_H, 0, 0, 2000);
+    VSET(ehy.ehy_Au, 1, 0, 0);
+    ehy.ehy_r1 = 1000;
+    ehy.ehy_r2 = 500;
+    ehy.ehy_c = 400;
+    tmp_internal.idb_ptr = (genptr_t)&ehy;
     tmp_internal.idb_meth = &rt_functab[ID_EHY];
     write_out(outfp, &tmp_internal, "ehy", &tol);
 
     bu_log("HYP\n");
-    struct rt_hyp_internal *hyp;
-    BU_GETSTRUCT(hyp, rt_hyp_internal);
-    hyp->hyp_magic = RT_HYP_INTERNAL_MAGIC;
-    VSET(hyp->hyp_Vi, 0, 0, 0);
-    VSET(hyp->hyp_Hi, 0, 0, 200);
-    VSET(hyp->hyp_A, 100, 0, 0);
-    hyp->hyp_b = 50;
-    hyp->hyp_bnr = 0.5;
-    tmp_internal.idb_ptr = (genptr_t)hyp;
+    struct rt_hyp_internal hyp;
+    hyp.hyp_magic = RT_HYP_INTERNAL_MAGIC;
+    VSET(hyp.hyp_Vi, 0, 0, 0);
+    VSET(hyp.hyp_Hi, 0, 0, 200);
+    VSET(hyp.hyp_A, 100, 0, 0);
+    hyp.hyp_b = 50;
+    hyp.hyp_bnr = 0.5;
+    tmp_internal.idb_ptr = (genptr_t)&hyp;
     tmp_internal.idb_meth = &rt_functab[ID_HYP];
     write_out(outfp, &tmp_internal, "hyp", &tol);
 
     bu_log("TGC\n");
-    struct rt_tgc_internal *tgc;
-    BU_GETSTRUCT(tgc, rt_tgc_internal);
-    tgc->magic = RT_TGC_INTERNAL_MAGIC;
-    VSET(tgc->v, 0, 0, -1000);
-    VSET(tgc->h, 0, 0, 2000);
-    VSET(tgc->a, 500, 0, 0);
-    VSET(tgc->b, 0, 250, 0);
-    VSET(tgc->c, 250, 0, 0);
-    VSET(tgc->d, 0, 500, 0);
-    tmp_internal.idb_ptr = (genptr_t)tgc;
+    struct rt_tgc_internal tgc;
+    tgc.magic = RT_TGC_INTERNAL_MAGIC;
+    VSET(tgc.v, 0, 0, -1000);
+    VSET(tgc.h, 0, 0, 2000);
+    VSET(tgc.a, 500, 0, 0);
+    VSET(tgc.b, 0, 250, 0);
+    VSET(tgc.c, 250, 0, 0);
+    VSET(tgc.d, 0, 500, 0);
+    tmp_internal.idb_ptr = (genptr_t)&tgc;
     tmp_internal.idb_meth = &rt_functab[ID_TGC];
     write_out(outfp, &tmp_internal, "tgc", &tol);
    
     bu_log("TOR\n");
-    struct rt_tor_internal *tor;
-    BU_GETSTRUCT(tor, rt_tor_internal);
-    tor->magic = RT_TOR_INTERNAL_MAGIC;
-    VSET(center, 0, 0, 0);
-    VSET(a, 0, 0, 1);
-    VMOVE(tor->v, center);
-    VMOVE(tor->h, a);
-    tor->r_a = 5.0;
-    tor->r_h = 2.0;
-    tmp_internal.idb_ptr = (genptr_t)tor;
+    struct rt_tor_internal tor;
+    tor.magic = RT_TOR_INTERNAL_MAGIC;
+    VSET(tor.v, 0.0, 0.0, 0.0);
+    VSET(tor.h, 0.0, 0.0, 1.0);
+    tor.r_a = 5.0;
+    tor.r_h = 2.0;
+    tmp_internal.idb_ptr = (genptr_t)&tor;
     tmp_internal.idb_meth = &rt_functab[ID_TOR];
     write_out(outfp, &tmp_internal, "tor", &tol);
     
     bu_log("ETO\n");
-    struct rt_eto_internal *eto;
-    BU_GETSTRUCT(eto, rt_eto_internal);
-    eto->eto_magic = RT_ETO_INTERNAL_MAGIC;
-    VSET(center, 0, 0, 0);
-    VSET(N, 0, 0, 1);
-    VSET(a, 200, 0, 200);
-    VMOVE(eto->eto_V, center);
-    VMOVE(eto->eto_N, N);
-    VMOVE(eto->eto_C, a);
-    eto->eto_r = 800;
-    eto->eto_rd = 100;
-    tmp_internal.idb_ptr = (genptr_t)eto;
+    struct rt_eto_internal eto;
+    eto.eto_magic = RT_ETO_INTERNAL_MAGIC;
+    VSET(eto.eto_V, 0.0, 0.0, 0.0);
+    VSET(eto.eto_N, 0.0, 0.0, 1.0);
+    VSET(eto.eto_C, 200.0, 0.0, 200.0);
+    eto.eto_r = 800;
+    eto.eto_rd = 100;
+    tmp_internal.idb_ptr = (genptr_t)&eto;
     tmp_internal.idb_meth = &rt_functab[ID_ETO];
     write_out(outfp, &tmp_internal, "eto", &tol);
 
@@ -408,25 +369,22 @@
     };
     int pipe1_npts = sizeof(pipe1)/sizeof(struct wdb_pipept);
     
-    struct rt_pipe_internal *pipe;
-    BU_GETSTRUCT(pipe, rt_pipe_internal);
-    BU_LIST_INIT(&pipe->pipe_segs_head);
-    pipe->pipe_magic = RT_PIPE_INTERNAL_MAGIC;
+    struct rt_pipe_internal pipe;
+    BU_LIST_INIT(&pipe.pipe_segs_head);
+    pipe.pipe_magic = RT_PIPE_INTERNAL_MAGIC;
     
     for (int i=0; i<pipe1_npts; i++) {
-       BU_LIST_INSERT(&pipe->pipe_segs_head, &pipe1[i].l);
+       BU_LIST_INSERT(&pipe.pipe_segs_head, &pipe1[i].l);
     }
-    tmp_internal.idb_ptr = (genptr_t)pipe;
+    tmp_internal.idb_ptr = (genptr_t)&pipe;
     tmp_internal.idb_meth = &rt_functab[ID_PIPE];
     write_out(outfp, &tmp_internal, "pipe", &tol);
     
     bu_log("SKETCH\n");
-    struct rt_sketch_internal *skt;
+    struct rt_sketch_internal skt;
     struct bezier_seg *bsg;
     struct line_seg *lsg;
     struct carc_seg *csg;
-    point_t V;
-    vect_t u_vec, v_vec;
     point2d_t verts[] = {
         { 250, 0 },     // 0 
        { 500, 0 },     // 1 
@@ -440,23 +398,20 @@
        { 200, 200 }    // 9 
     };
     size_t cnti;
-    VSET(V, 10, 20, 30);
-    VSET(u_vec, 1, 0, 0);
-    VSET(v_vec, 0, 1, 0);
-    skt = (struct rt_sketch_internal *)bu_calloc(1, sizeof(struct 
rt_sketch_internal), "sketch");
-    skt->magic = RT_SKETCH_INTERNAL_MAGIC;
-    VMOVE(skt->V, V);
-    VMOVE(skt->u_vec, u_vec);
-    VMOVE(skt->v_vec, v_vec);
-    skt->vert_count = 10;
-    skt->verts = (point2d_t *)bu_calloc(skt->vert_count, sizeof(point2d_t), 
"verts");
-    for (cnti=0; cnti < skt->vert_count; cnti++) {
-       V2MOVE(skt->verts[cnti], verts[cnti]);
+    skt.magic = RT_SKETCH_INTERNAL_MAGIC;
+    VSET(skt.V, 10.0, 20.0, 30.0);
+    VSET(skt.u_vec, 1.0, 0.0, 0.0);
+    VSET(skt.v_vec, 0.0, 1.0, 0.0);
+    skt.vert_count = 10;
+    skt.verts = (point2d_t *)bu_calloc(skt.vert_count, sizeof(point2d_t), 
"verts");
+    for (cnti=0; cnti < skt.vert_count; cnti++) {
+       V2MOVE(skt.verts[cnti], verts[cnti]);
     }
-    skt->skt_curve.seg_count = 6;
-    skt->skt_curve.reverse = (int *)bu_calloc(skt->skt_curve.seg_count, 
sizeof(int), "sketch: reverse");
-    skt->skt_curve.segments = (genptr_t *)bu_calloc(skt->skt_curve.seg_count, 
sizeof(genptr_t), "segs");
-    bsg = (struct bezier_seg *)bu_malloc(sizeof(struct bezier_seg), "sketch: 
bsg");
+    skt.skt_curve.seg_count = 6;
+    skt.skt_curve.reverse = (int *)bu_calloc(skt.skt_curve.seg_count, 
sizeof(int), "sketch: reverse");
+    skt.skt_curve.segments = (genptr_t *)bu_calloc(skt.skt_curve.seg_count, 
sizeof(genptr_t), "segs");
+
+    BU_GETSTRUCT(bsg, bezier_seg);
     bsg->magic = CURVE_BEZIER_MAGIC;
     bsg->degree = 4;
     bsg->ctl_points = (int *)bu_calloc(bsg->degree+1, sizeof(int), "sketch: 
bsg->ctl_points");
@@ -465,57 +420,51 @@
     bsg->ctl_points[2] = 9;
     bsg->ctl_points[3] = 8;
     bsg->ctl_points[4] = 0;
-    skt->skt_curve.segments[0] = (genptr_t)bsg;
-    
-    lsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: lsg");
+    skt.skt_curve.segments[0] = (genptr_t)bsg;
+
+    BU_GETSTRUCT(lsg, line_seg);
     lsg->magic = CURVE_LSEG_MAGIC;
     lsg->start = 0;
     lsg->end = 1;
+    skt.skt_curve.segments[1] = (genptr_t)lsg;
     
-    skt->skt_curve.segments[1] = (genptr_t)lsg;
-    
-    lsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: lsg");
+    BU_GETSTRUCT(lsg, line_seg);
     lsg->magic = CURVE_LSEG_MAGIC;
     lsg->start = 1;
     lsg->end = 2;
+    skt.skt_curve.segments[2] = (genptr_t)lsg;
     
-    skt->skt_curve.segments[2] = (genptr_t)lsg;
-    
-    lsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: lsg");
+    BU_GETSTRUCT(lsg, line_seg);
     lsg->magic = CURVE_LSEG_MAGIC;
     lsg->start = 2;
     lsg->end = 3;
+    skt.skt_curve.segments[3] = (genptr_t)lsg;
     
-    skt->skt_curve.segments[3] = (genptr_t)lsg;
-    
-    lsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: lsg");
+    BU_GETSTRUCT(lsg, line_seg);
     lsg->magic = CURVE_LSEG_MAGIC;
     lsg->start = 3;
     lsg->end = 4;
+    skt.skt_curve.segments[4] = (genptr_t)lsg;
     
-    skt->skt_curve.segments[4] = (genptr_t)lsg;
-    
-    csg = (struct carc_seg *)bu_malloc(sizeof(struct carc_seg), "sketch: csg");
-    
+    BU_GETSTRUCT(csg, carc_seg);
     csg->magic = CURVE_CARC_MAGIC;
     csg->radius = -1.0;
     csg->start = 6;
     csg->end = 5;
+    skt.skt_curve.segments[5] = (genptr_t)csg;
     
-    skt->skt_curve.segments[5] = (genptr_t)csg;
-    
-    tmp_internal.idb_ptr = (genptr_t)skt;
+    tmp_internal.idb_ptr = (genptr_t)&skt;
     tmp_internal.idb_meth = &rt_functab[ID_SKETCH];
     write_out(outfp, &tmp_internal, "sketch", &tol);
 
     /* !!! clean up calloc memory  */
 
     /* !!! wot? */
-    mk_sketch(outfp, "sketch", skt);
+    mk_sketch(outfp, "sketch", &skt);
 
     bu_log("EXTRUDE\n");
     // extrude will need its own sketch
-    struct rt_sketch_internal *eskt;
+    struct rt_sketch_internal eskt;
     struct bezier_seg *ebsg;
     struct line_seg *elsg;
     struct carc_seg *ecsg;
@@ -531,23 +480,20 @@
        { 125, 0 },     // 8 
        { 200, 200 }    // 9 
     };
-    VSET(V, 10, 20, 30);
-    VSET(u_vec, 1, 0, 0);
-    VSET(v_vec, 0, 1, 0);
-    eskt = (struct rt_sketch_internal *)bu_calloc(1, sizeof(struct 
rt_sketch_internal), "sketch");
-    eskt->magic = RT_SKETCH_INTERNAL_MAGIC;
-    VMOVE(eskt->V, V);
-    VMOVE(eskt->u_vec, u_vec);
-    VMOVE(eskt->v_vec, v_vec);
-    eskt->vert_count = 10;
-    eskt->verts = (point2d_t *)bu_calloc(eskt->vert_count, sizeof(point2d_t), 
"verts");
-    for (cnti=0; cnti < eskt->vert_count; cnti++) {
-       V2MOVE(eskt->verts[cnti], everts[cnti]);
+    eskt.magic = RT_SKETCH_INTERNAL_MAGIC;
+    VSET(eskt.V, 10.0, 20.0, 30.0);
+    VSET(eskt.u_vec, 1.0, 0.0, 0.0);
+    VSET(eskt.v_vec, 0.0, 1.0, 0.0);
+    eskt.vert_count = 10;
+    eskt.verts = (point2d_t *)bu_calloc(eskt.vert_count, sizeof(point2d_t), 
"verts");
+    for (cnti=0; cnti < eskt.vert_count; cnti++) {
+       V2MOVE(eskt.verts[cnti], everts[cnti]);
     }
-    eskt->skt_curve.seg_count = 6;
-    eskt->skt_curve.reverse = (int *)bu_calloc(eskt->skt_curve.seg_count, 
sizeof(int), "sketch: reverse");
-    eskt->skt_curve.segments = (genptr_t 
*)bu_calloc(eskt->skt_curve.seg_count, sizeof(genptr_t), "segs");
-    ebsg = (struct bezier_seg *)bu_malloc(sizeof(struct bezier_seg), "sketch: 
bsg");
+    eskt.skt_curve.seg_count = 6;
+    eskt.skt_curve.reverse = (int *)bu_calloc(eskt.skt_curve.seg_count, 
sizeof(int), "sketch: reverse");
+    eskt.skt_curve.segments = (genptr_t *)bu_calloc(eskt.skt_curve.seg_count, 
sizeof(genptr_t), "segs");
+
+    BU_GETSTRUCT(ebsg, bezier_seg);
     ebsg->magic = CURVE_BEZIER_MAGIC;
     ebsg->degree = 4;
     ebsg->ctl_points = (int *)bu_calloc(bsg->degree+1, sizeof(int), "sketch: 
bsg->ctl_points");
@@ -556,64 +502,56 @@
     ebsg->ctl_points[2] = 9;
     ebsg->ctl_points[3] = 8;
     ebsg->ctl_points[4] = 0;
-    eskt->skt_curve.segments[0] = (genptr_t)ebsg;
+    eskt.skt_curve.segments[0] = (genptr_t)ebsg;
     
-    elsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(elsg, line_seg);
     elsg->magic = CURVE_LSEG_MAGIC;
     elsg->start = 0;
     elsg->end = 1;
+    eskt.skt_curve.segments[1] = (genptr_t)elsg;
     
-    eskt->skt_curve.segments[1] = (genptr_t)elsg;
-    
-    elsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(elsg, line_seg);
     elsg->magic = CURVE_LSEG_MAGIC;
     elsg->start = 1;
     elsg->end = 2;
+    eskt.skt_curve.segments[2] = (genptr_t)elsg;
     
-    eskt->skt_curve.segments[2] = (genptr_t)elsg;
-    
-    elsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(elsg, line_seg);
     elsg->magic = CURVE_LSEG_MAGIC;
     elsg->start = 2;
     elsg->end = 3;
+    eskt.skt_curve.segments[3] = (genptr_t)elsg;
     
-    eskt->skt_curve.segments[3] = (genptr_t)elsg;
-    
-    elsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(elsg, line_seg);
     elsg->magic = CURVE_LSEG_MAGIC;
     elsg->start = 3;
     elsg->end = 4;
+    eskt.skt_curve.segments[4] = (genptr_t)elsg;
     
-    eskt->skt_curve.segments[4] = (genptr_t)elsg;
-    
-    ecsg = (struct carc_seg *)bu_malloc(sizeof(struct carc_seg), "sketch: 
csg");
-    
+    BU_GETSTRUCT(ecsg, carc_seg);
     ecsg->magic = CURVE_CARC_MAGIC;
     ecsg->radius = -1.0;
     ecsg->start = 6;
     ecsg->end = 5;
-    
-    eskt->skt_curve.segments[5] = (genptr_t)ecsg;
+    eskt.skt_curve.segments[5] = (genptr_t)ecsg;
+
     // now to the actual extrusion 
-    struct rt_extrude_internal *extrude;
-    BU_GETSTRUCT(extrude, rt_extrude_internal);
-    extrude->magic = RT_EXTRUDE_INTERNAL_MAGIC;
-    VSET(V, 0, 0, 0);
-    VSET(h, 0, 0, 1000);
-    VMOVE(extrude->V, V);
-    VMOVE(extrude->h, h);
-    VMOVE(extrude->u_vec, u_vec);
-    VMOVE(extrude->v_vec, v_vec);
-    const char* esketch_name = "esketch_nurb.s";
-    extrude->sketch_name = bu_strdup(esketch_name);
-    extrude->skt = eskt;
-    tmp_internal.idb_ptr = (genptr_t)extrude;
+    struct rt_extrude_internal extrude;
+    extrude.magic = RT_EXTRUDE_INTERNAL_MAGIC;
+    VSET(extrude.V, 0.0, 0.0, 0.0);
+    VSET(extrude.h, 0.0, 0.0, 1000.0);
+    VSET(extrude.u_vec, 1.0, 0.0, 0.0);
+    VSET(extrude.v_vec, 0.0, 1.0, 0.0);
+    const char* esketch_name = "esketch.brep";
+    extrude.sketch_name = bu_strdup(esketch_name);
+    extrude.skt = &eskt;
+    tmp_internal.idb_ptr = (genptr_t)&extrude;
     tmp_internal.idb_meth = &rt_functab[ID_EXTRUDE];
     write_out(outfp, &tmp_internal, "extrude", &tol);
  
     bu_log("REVOLVE\n");
     // revolve will need its own sketch
-    struct rt_sketch_internal *rskt;
+    struct rt_sketch_internal rskt;
     struct bezier_seg *rbsg;
     struct line_seg *rlsg;
     struct carc_seg *rcsg;
@@ -629,23 +567,21 @@
        { 125, 0 },     // 8 
        { 200, 200 }    // 9 
     };
-    VSET(V, 10, 20, 30);
-    VSET(u_vec, 1, 0, 0);
-    VSET(v_vec, 0, 1, 0);
-    rskt = (struct rt_sketch_internal *)bu_calloc(1, sizeof(struct 
rt_sketch_internal), "sketch");
-    rskt->magic = RT_SKETCH_INTERNAL_MAGIC;
-    VMOVE(rskt->V, V);
-    VMOVE(rskt->u_vec, u_vec);
-    VMOVE(rskt->v_vec, v_vec);
-    rskt->vert_count = 10;
-    rskt->verts = (point2d_t *)bu_calloc(rskt->vert_count, sizeof(point2d_t), 
"verts");
-    for (cnti=0; cnti < rskt->vert_count; cnti++) {
-       V2MOVE(rskt->verts[cnti], rverts[cnti]);
+
+    rskt.magic = RT_SKETCH_INTERNAL_MAGIC;
+    VSET(rskt.V, 10.0, 20.0, 30.0);
+    VSET(rskt.u_vec, 1.0, 0.0, 0.0);
+    VSET(rskt.v_vec, 0.0, 1.0, 0.0);
+    rskt.vert_count = 10;
+    rskt.verts = (point2d_t *)bu_calloc(rskt.vert_count, sizeof(point2d_t), 
"verts");
+    for (cnti=0; cnti < rskt.vert_count; cnti++) {
+       V2MOVE(rskt.verts[cnti], rverts[cnti]);
     }
-    rskt->skt_curve.seg_count = 6;
-    rskt->skt_curve.reverse = (int *)bu_calloc(rskt->skt_curve.seg_count, 
sizeof(int), "sketch: reverse");
-    rskt->skt_curve.segments = (genptr_t 
*)bu_calloc(rskt->skt_curve.seg_count, sizeof(genptr_t), "segs");
-    rbsg = (struct bezier_seg *)bu_malloc(sizeof(struct bezier_seg), "sketch: 
bsg");
+    rskt.skt_curve.seg_count = 6;
+    rskt.skt_curve.reverse = (int *)bu_calloc(rskt.skt_curve.seg_count, 
sizeof(int), "sketch: reverse");
+    rskt.skt_curve.segments = (genptr_t *)bu_calloc(rskt.skt_curve.seg_count, 
sizeof(genptr_t), "segs");
+
+    BU_GETSTRUCT(rbsg, bezier_seg);
     rbsg->magic = CURVE_BEZIER_MAGIC;
     rbsg->degree = 4;
     rbsg->ctl_points = (int *)bu_calloc(rbsg->degree+1, sizeof(int), "sketch: 
bsg->ctl_points");
@@ -654,73 +590,65 @@
     rbsg->ctl_points[2] = 9;
     rbsg->ctl_points[3] = 8;
     rbsg->ctl_points[4] = 0;
-    rskt->skt_curve.segments[0] = (genptr_t)rbsg;
+    rskt.skt_curve.segments[0] = (genptr_t)rbsg;
     
-    rlsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(rlsg, line_seg);
     rlsg->magic = CURVE_LSEG_MAGIC;
     rlsg->start = 0;
-    rlsg->end = 1;
+    rlsg->end = 1;    
+    rskt.skt_curve.segments[1] = (genptr_t)rlsg;
     
-    rskt->skt_curve.segments[1] = (genptr_t)rlsg;
-    
-    rlsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(rlsg, line_seg);
     rlsg->magic = CURVE_LSEG_MAGIC;
     rlsg->start = 1;
-    rlsg->end = 2;
+    rlsg->end = 2;    
+    rskt.skt_curve.segments[2] = (genptr_t)rlsg;
     
-    rskt->skt_curve.segments[2] = (genptr_t)rlsg;
-    
-    rlsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(rlsg, line_seg);
     rlsg->magic = CURVE_LSEG_MAGIC;
     rlsg->start = 2;
     rlsg->end = 3;
+    rskt.skt_curve.segments[3] = (genptr_t)rlsg;
     
-    rskt->skt_curve.segments[3] = (genptr_t)rlsg;
-    
-    rlsg = (struct line_seg *)bu_malloc(sizeof(struct line_seg), "sketch: 
lsg");
+    BU_GETSTRUCT(rlsg, line_seg);
     rlsg->magic = CURVE_LSEG_MAGIC;
     rlsg->start = 3;
-    rlsg->end = 4;
+    rlsg->end = 4;    
+    rskt.skt_curve.segments[4] = (genptr_t)rlsg;
     
-    rskt->skt_curve.segments[4] = (genptr_t)rlsg;
-    
-    rcsg = (struct carc_seg *)bu_malloc(sizeof(struct carc_seg), "sketch: 
csg");
-    
+    BU_GETSTRUCT(rcsg, carc_seg);
     rcsg->magic = CURVE_CARC_MAGIC;
     rcsg->radius = -1.0;
     rcsg->start = 6;
-    rcsg->end = 5;
-    
-    rskt->skt_curve.segments[5] = (genptr_t)rcsg;
+    rcsg->end = 5;    
+    rskt.skt_curve.segments[5] = (genptr_t)rcsg;
+
     // now to the actual revolve 
-    struct rt_revolve_internal *revolve;
-    BU_GETSTRUCT(revolve, rt_revolve_internal);
-    revolve->magic = RT_REVOLVE_INTERNAL_MAGIC;
-    VSET(V, -2000, 0, 0);
-    VSET(h, 0, 1, 0);
-    VMOVE(revolve->v3d, V);
-    VMOVE(revolve->axis3d, h);
-    revolve->sk = rskt;
-    tmp_internal.idb_ptr = (genptr_t)revolve;
+    struct rt_revolve_internal revolve;
+    revolve.magic = RT_REVOLVE_INTERNAL_MAGIC;
+    VSET(revolve.v3d, -2000.0, 0.0, 0.0);
+    VSET(revolve.axis3d, 0.0, 1.0, 0.0);
+    revolve.sk = &rskt;
+    tmp_internal.idb_ptr = (genptr_t)&revolve;
     tmp_internal.idb_meth = &rt_functab[ID_REVOLVE];
     write_out(outfp, &tmp_internal, "revolve", &tol);
  
     bu_log("DSP\n");
-    struct rt_dsp_internal *dsp;
-    BU_GETSTRUCT(dsp, rt_dsp_internal);
-    dsp->magic = RT_DSP_INTERNAL_MAGIC;
-    bu_vls_init(&(dsp->dsp_name));
-    bu_vls_printf(&(dsp->dsp_name), "data.dsp");
-    dsp->dsp_xcnt = 256;
-    dsp->dsp_ycnt = 256;
-    dsp->dsp_smooth = 1;
-    dsp->dsp_cuttype = 'a';
-    dsp->dsp_datasrc = RT_DSP_SRC_FILE;
-    MAT_IDN(dsp->dsp_mtos);
-    MAT_IDN(dsp->dsp_stom);
-    tmp_internal.idb_ptr = (genptr_t)dsp;
+    struct rt_dsp_internal dsp;
+    dsp.magic = RT_DSP_INTERNAL_MAGIC;
+    bu_vls_init(&(dsp.dsp_name));
+    bu_vls_printf(&(dsp.dsp_name), "data.dsp");
+    dsp.dsp_xcnt = 256;
+    dsp.dsp_ycnt = 256;
+    dsp.dsp_smooth = 1;
+    dsp.dsp_cuttype = 'a';
+    dsp.dsp_datasrc = RT_DSP_SRC_FILE;
+    MAT_IDN(dsp.dsp_mtos);
+    MAT_IDN(dsp.dsp_stom);
+    tmp_internal.idb_ptr = (genptr_t)&dsp;
     tmp_internal.idb_meth = &rt_functab[ID_DSP];
     write_out(outfp, &tmp_internal, "dsp", &tol);
+    bu_vls_free(&dsp.dsp_name);
 
     /* clean up */
     wdb_close(outfp);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to