try changing it to:
Code:
bool IsAlive (edict_t *pEdict)
{
if (FNullEnt(pEdict)) // added this
return FALSE; // added this
return ((pEdict->v.deadflag == DEAD_NO)
&& (pEdict->v.health > 0)
&& (pEdict->v.movetype != MOVETYPE_NOCLIP));
}
*edit*: added some comments to show difference
*edit2*: oops.... you have already tried this code...
Perhaps there's some invalid memory access in your code. Invalid memory access usually can cause weird crashes *elsewhere*.