Forráskód Böngészése

Fixed atcommand aliases memory leak, bugreport:5200

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15383 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 13 éve
szülő
commit
21b0b61a99
1 módosított fájl, 18 hozzáadás és 3 törlés
  1. 18 3
      src/map/atcommand.c

+ 18 - 3
src/map/atcommand.c

@@ -9332,10 +9332,25 @@ int atcommand_config_read(const char* cfgName)
 	return 0;
 }
 
+static int atcommand_db_free(DBKey key,void *data,va_list va) {
+
+	aFree((AtCommandInfo*)data);
+	
+	return 1;
+}
+
+void atcommand_db_clear() {
+
+	atcommand_db->foreach(atcommand_db,atcommand_db_free);
+	db_destroy(atcommand_db);
+
+	return;
+}
+
 void atcommand_doload() {
 
 	if( atcommand_db != NULL )
-		db_destroy(atcommand_db);
+		atcommand_db_clear();
 
 	atcommand_db = stridb_alloc(DB_OPT_DUP_KEY, 0);
 	atcommand_basecommands();//fills initial atcommand_db with known commands
@@ -9355,8 +9370,8 @@ void do_init_atcommand() {
 }
 
 void do_final_atcommand() {
-	
-	db_destroy(atcommand_db);
+
+	atcommand_db_clear();
 
 	return;
 }