/* ==================== Cache_Check consistency check ==================== */ void *Cache_Check( byte *mempool, cache_user_t *c ) { if( !c->data ) return NULL; if( !Mem_IsAllocatedExt( mempool, c->data )) return NULL; return c->data; }
/* ================ SV_CheckAllEnts ================ */ void SV_CheckAllEnts( void ) { edict_t *e; int i; if( !sv_check_errors->integer || sv.state != ss_active ) return; // check edicts errors for( i = svgame.globals->maxClients + 1; i < svgame.numEntities; i++ ) { e = EDICT_NUM( i ); // DEBUG: check 'gamestate' for using by mods if( e->v.gamestate != 0 ) { MsgDev( D_INFO, "Entity %s[%i] uses gamestate %i\n", SV_ClassName( e ), NUM_FOR_EDICT( e ), e->v.gamestate ); } if( e->free && e->pvPrivateData != NULL ) { MsgDev( D_ERROR, "Freed entity %s (%i) has private data.\n", SV_ClassName( e ), i ); continue; } if( !SV_IsValidEdict( e )) continue; if( !e->v.pContainingEntity || e->v.pContainingEntity != e ) { MsgDev( D_ERROR, "Entity %s (%i) has invalid container, fixed.\n", SV_ClassName( e ), i ); e->v.pContainingEntity = e; continue; } if( !e->pvPrivateData || !Mem_IsAllocatedExt( svgame.mempool, e->pvPrivateData )) { MsgDev( D_ERROR, "Entity %s (%i) trashed private data.\n", SV_ClassName( e ), i ); e->pvPrivateData = NULL; continue; } SV_CheckVelocity( e ); } }