void BurnLibs( void ) /**************************/ /* let dict memory know it's no longer needed */ { file_list *temp; dict_entry *dict; for( temp = ObjLibFiles; temp != NULL; temp = temp->next_file ) { if( temp->status & STAT_AR_LIB ) { CacheFree( temp, temp->strtab ); temp->strtab = NULL; } dict = temp->u.dict; if( dict == NULL ) continue; if( temp->status & STAT_AR_LIB ) { CacheFree( temp, dict->a.filepostab - 1 ); _LnkFree( dict->a.symbtab ); } else { if( dict->o.cache != NULL ) { FreeDictCache( dict->o.cache, ( dict->o.pages / PAGES_IN_CACHE ) + 1 ); } } _LnkFree( dict ); temp->u.dict = NULL; FreeObjCache( temp ); } }
/*********************************************************************** * application is finished, so we have to clean the desktop behind us ***********************************************************************/ static void StopApplication (void) { gPrefs.curCat = DatabaseGetCat(); PrefSavePrefs(&gPrefs); FrmCloseAllForms (); CacheFree(); CloseDatabase(); }
static void ClearCachedData( file_list *list ) /********************************************/ { readcache *cache; readcache *next; for( cache = ReadCacheList; cache != NULL; cache = next ) { next = cache->next; CacheFree( list, cache->data ); _LnkFree( cache ); } ReadCacheList = NULL; }