Prechádzať zdrojové kódy

Fixing r13503...
- Added missing id_db removal calls for all flooritem objects (bugreport:2729)
- Added missing destruction of skillunit_db on mapserver exit

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13505 54d463be-8e91-2dee-dedb-b68131a5f0ec

ultramage 16 rokov pred
rodič
commit
7f2589f080
3 zmenil súbory, kde vykonal 12 pridanie a 4 odobranie
  1. 1 0
      src/map/chat.c
  2. 8 3
      src/map/map.c
  3. 3 1
      src/map/skill.c

+ 1 - 0
src/map/chat.c

@@ -328,6 +328,7 @@ int chat_deletenpcchat(struct npc_data* nd)
 	clif_clearchat(cd, 0);
 	map_delblock(&cd->bl);
 	map_freeblock(&cd->bl);
+	map_deliddb(&cd->bl);
 	nd->chat_id = 0;
 	
 	return 0;

+ 8 - 3
src/map/map.c

@@ -1171,18 +1171,23 @@ int map_get_new_object_id(void)
  *------------------------------------------*/
 int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr data)
 {
-	struct flooritem_data* fitem = idb_get(id_db, id);
-	if(fitem==NULL || fitem->bl.type!=BL_ITEM || (!data && fitem->cleartimer != tid)){
+	struct flooritem_data* fitem = (struct flooritem_data*)idb_get(id_db, id);
+	if( fitem==NULL || fitem->bl.type!=BL_ITEM || (!data && fitem->cleartimer != tid) )
+	{
 		ShowError("map_clearflooritem_timer : error\n");
 		return 1;
 	}
+
 	if(data)
 		delete_timer(fitem->cleartimer,map_clearflooritem_timer);
-	else if(fitem->item_data.card[0] == CARD0_PET)
+	else
+	if(fitem->item_data.card[0] == CARD0_PET) // pet egg
 		intif_delete_petdata( MakeDWord(fitem->item_data.card[1],fitem->item_data.card[2]) );
+
 	clif_clearflooritem(fitem,0);
 	map_delblock(&fitem->bl);
 	map_freeblock(&fitem->bl);
+	map_deliddb(&fitem->bl);
 
 	return 0;
 }

+ 3 - 1
src/map/skill.c

@@ -9587,8 +9587,9 @@ int skill_delunit (struct skill_unit* unit)
 
 	unit->group=NULL;
 	unit->alive=0;
-	idb_remove(skillunit_db, unit->bl.id);
 	map_delblock(&unit->bl); // don't free yet
+	map_deliddb(&unit->bl);
+	idb_remove(skillunit_db, unit->bl.id);
 	if(--group->alive_count==0)
 		skill_delunitgroup(NULL, group);
 
@@ -11404,6 +11405,7 @@ int do_final_skill(void)
 {
 	db_destroy(skilldb_name2id);
 	db_destroy(group_db);
+	db_destroy(skillunit_db);
 	ers_destroy(skill_unit_ers);
 	ers_destroy(skill_timer_ers);
 	return 0;