Add a hack to get rid of the rare "ERROR: StaticObjectList::insert(): id already...
authorPerttu Ahola <celeron55@gmail.com>
Sun, 15 Apr 2012 11:37:35 +0000 (14:37 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Sun, 15 Apr 2012 11:37:35 +0000 (14:37 +0300)
src/environment.cpp

index 43dbb65d07d9cef57ec1aba9a4413dcbf6bab948..f0ba097e040512dacb7467842b8fea6f335ec5ee 100644 (file)
@@ -1748,6 +1748,15 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete)
                                        force_delete = true;
                                } else {
                                        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);
                                        
                                        // Only mark block as modified if data changed considerably