Add a hack to get rid of the rare "ERROR: StaticObjectList::insert(): id already exists" failure

This commit is contained in:
Perttu Ahola 2012-04-15 14:37:35 +03:00
parent 0aeb5adb8f
commit a35e4bdbda

@ -1748,6 +1748,15 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete)
force_delete = true; force_delete = true;
} else { } else {
u16 new_id = pending_delete ? id : 0; u16 new_id = pending_delete ? id : 0;
// If static counterpart already exists, remove it first.
// This shouldn't happen, but happens rarely for some
// unknown reason. Unsuccessful attempts have been made to
// find said reason.
if(new_id && block->m_static_objects.m_active.find(new_id)){
infostream<<"ServerEnv: WARNING: Performing hack #83274"
<<std::endl;
block->m_static_objects.remove(new_id);
}
block->m_static_objects.insert(new_id, s_obj); block->m_static_objects.insert(new_id, s_obj);
// Only mark block as modified if data changed considerably // Only mark block as modified if data changed considerably