[brlcad-commits] CVS: brlcad/src/librt prep.c,14.24,14.25
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Sean M. <br...@us...> - 2007-05-19 07:00:16
|
Update of /cvsroot/brlcad/brlcad/src/librt In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28669/librt Modified Files: prep.c Log Message: if a raytrace instance isn't being provided, we can/could presume that cleaning up after the directories is okay. all of these issues stem from the two bu_ptbl_init() calls that do actually allocate memory (for the table). leave the freeing uncommited for now, just with comments Index: prep.c =================================================================== RCS file: /cvsroot/brlcad/brlcad/src/librt/prep.c,v retrieving revision 14.24 retrieving revision 14.25 diff -w -u -r14.24 -r14.25 --- prep.c 19 May 2007 06:26:22 -0000 14.24 +++ prep.c 19 May 2007 07:00:15 -0000 14.25 @@ -698,8 +698,9 @@ * or otherwise allocated by a LIBRT application) but any dynamic * memory pointed to by it is freed. * - * One exception to this is that the re_directory_hd and re_directory_blocks - * are not touched, because the "directory" structures (which are really + * One exception to this is that the re_directory_hd and + * re_directory_blocks are not touched unless there is no raytrace + * instance, because the "directory" structures (which are really * part of the db_i) continue to be in use. */ void @@ -726,8 +727,22 @@ /* * The 'struct directory' guys are malloc()ed in big blocks, - * but CAN'T BE FREED HERE! We are not done with the db_i yet. + * but CAN'T BE FREED HERE unless there is no rt instance! + * We are not done with the db_i yet if there is an rtip. */ +#if 0 + if (!rtip) { + if( BU_LIST_IS_INITIALIZED( &resp->re_directory_blocks.l ) ) { + struct directory **dpp; + BU_CK_PTBL( &resp->re_directory_blocks ); + for( BU_PTBL_FOR( dpp, (struct directory **), &resp->re_directory_blocks ) ) { + RT_CK_DIR(*dpp); /* Head of block will be a valid seg */ + bu_free( (genptr_t)(*dpp), "struct directory block" ); + } + bu_ptbl_free( &resp->re_directory_blocks ); + } + } +#endif /* The "struct hitmiss' guys are individually malloc()ed */ if( BU_LIST_IS_INITIALIZED( &resp->re_nmgfree ) ) { |