Maybe a sanity check is needed for "while(1)" ?
Code:
int16 EntityList::GetFreeID()
{
if(last_insert_id > 1500)
last_insert_id = 0;
int16 getid=last_insert_id;
while(1)
{
getid++;
if (GetID(getid) == 0)
{
last_insert_id = getid;
return getid;
}
}
}
Seems like that could easily cause an infinite loop if last_insert_id is really high to begin with. Either way, it seems like a bad idea to use "while(1)" to me.
Here is EntityList::GetID() for reference:
Code:
Entity* EntityList::GetID(int16 get_id)
{
Entity* ent=0;
if((ent=entity_list.GetEntityMob(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityDoor(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityCorpse(get_id))!=0)
return ent;
// else if((ent=entity_list.GetEntityGroup(get_id))!=0)
// return ent;
else if((ent=entity_list.GetEntityObject(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityTrap(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityBeacon(get_id))!=0)
return ent;
else
return 0;
}