void _Mem_EmptyPool( mempool_t *pool, int musthave, int canthave, const char *filename, int fileline ) { mempool_t *child, *next; #ifdef SHOW_NONFREED memheader_t *mem; #endif if( pool == NULL ) _Mem_Error( "Mem_EmptyPool: pool == NULL (emptypool at %s:%i)", filename, fileline ); if( musthave && ( ( pool->flags & musthave ) != musthave ) ) _Mem_Error( "Mem_EmptyPool: bad pool flags (musthave) (alloc at %s:%i)", filename, fileline ); if( canthave && ( pool->flags & canthave ) ) _Mem_Error( "Mem_EmptyPool: bad pool flags (canthave) (alloc at %s:%i)", filename, fileline ); // recurse into children if( pool->child ) { for( child = pool->child; child; child = next ) { next = child->next; _Mem_EmptyPool( child, 0, 0, filename, fileline ); } } assert( pool->sentinel1 == MEMHEADER_SENTINEL1 ); assert( pool->sentinel2 == MEMHEADER_SENTINEL1 ); if( pool->sentinel1 != MEMHEADER_SENTINEL1 ) _Mem_Error( "Mem_EmptyPool: trashed pool sentinel 1 (allocpool at %s:%i, emptypool at %s:%i)", pool->filename, pool->fileline, filename, fileline ); if( pool->sentinel2 != MEMHEADER_SENTINEL1 ) _Mem_Error( "Mem_EmptyPool: trashed pool sentinel 2 (allocpool at %s:%i, emptypool at %s:%i)", pool->filename, pool->fileline, filename, fileline ); #ifdef SHOW_NONFREED if( pool->chain ) Com_Printf( "Warning: Memory pool %s has resources that weren't freed:\n", pool->name ); for( mem = pool->chain; mem; mem = mem->next ) { Com_Printf( "%10i bytes allocated at %s:%i\n", mem->size, mem->filename, mem->fileline ); } #endif while( pool->chain ) // free memory owned by the pool Mem_Free( (void *)( (qbyte *) pool->chain + sizeof( memheader_t ) ) ); }
static void Irc_MemEmptyPool( const char *filename, int fileline ) { _Mem_EmptyPool( irc_pool, 0, 0, filename, fileline ); }
/* * CL_CinModule_MemEmptyPool */ static void CL_CinModule_MemEmptyPool( mempool_t *pool, const char *filename, int fileline ) { _Mem_EmptyPool( pool, MEMPOOL_CINMODULE, 0, filename, fileline ); }
/* * CL_SoundModule_MemEmptyPool */ static void CL_SoundModule_MemEmptyPool( mempool_t *pool, const char *filename, int fileline ) { _Mem_EmptyPool( pool, MEMPOOL_SOUND, 0, filename, fileline ); }
static void Com_ScriptModule_MemEmptyPool( mempool_t *pool, const char *filename, int fileline ) { _Mem_EmptyPool( pool, MEMPOOL_ANGELSCRIPT, 0, filename, fileline ); }