[brlcad-commits] CVS: brlcad/src/conv asc2g.c,14.23,14.24
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Sean M. <br...@us...> - 2007-05-18 23:53:46
|
Update of /cvsroot/brlcad/brlcad/src/conv In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19130 Modified Files: asc2g.c Log Message: close/free file pointers and buffers on shutdown Index: asc2g.c =================================================================== RCS file: /cvsroot/brlcad/brlcad/src/conv/asc2g.c,v retrieving revision 14.23 retrieving revision 14.24 diff -w -u -r14.23 -r14.24 --- asc2g.c 18 May 2007 23:42:12 -0000 14.23 +++ asc2g.c 18 May 2007 23:53:45 -0000 14.24 @@ -79,16 +79,16 @@ void strsolbld(void), nmgbld(void); static union record record; /* GED database record */ -char *buf; /* Record input buffer */ -char name[NAMESIZE + 2]; +char *buf = NULL; /* Record input buffer */ +char name[NAMESIZE + 2] = {0}; -FILE *ifp; -struct rt_wdb *ofp; +FILE *ifp = NULL; +struct rt_wdb *ofp = NULL; static int ars_ncurves=0; static int ars_ptspercurve=0; static int ars_curve=0; static int ars_pt=0; -static char *ars_name; +static char *ars_name = NULL; static fastf_t **ars_curves=NULL; static char *slave_name = "safe_interp"; static char *db_name = "_db"; @@ -133,7 +133,7 @@ * M A I N */ int -main(int argc, char **argv) +main(int argc, char *argv[]) { char c1[3]; #ifdef _WIN32 @@ -162,7 +162,8 @@ rt_init_resource( &rt_uniresource, 0, NULL ); if( bu_fgets( c1, 6, ifp ) == NULL ) { - fclose(ifp); + fclose(ifp); ifp = NULL; + wdb_close(ofp); ofp = NULL; bu_bomb( "Unexpected EOF\n" ); } @@ -174,7 +175,7 @@ /* this is a Tcl script */ #ifdef _WIN32 - fclose(ifp); + fclose(ifp); ifp = NULL; #else rewind( ifp ); #endif @@ -214,7 +215,12 @@ exit( 1 ); } - exit( 0 ); + /* free up our resources */ + mk_write_color_table( ofp ); + fclose(ifp); ifp = NULL; + wdb_close(ofp); ofp = NULL; + + return 0; } else { rewind( ifp ); } @@ -319,15 +325,18 @@ memset(buf, 0, sizeof(char) * BUFSIZE); } - bu_free(buf, "input buffer"); - /* Now, at the end of the database, dump out the entire * region-id-based color table. */ mk_write_color_table( ofp ); - wdb_close(ofp); - exit(0); + /* close up shop */ + bu_free(buf, "input buffer"); + buf = NULL; /* sanity */ + fclose(ifp); ifp = NULL; + wdb_close(ofp); ofp = NULL; + + return 0; } /* |