* Fixed alot of memory leaks
* Added stray memory cleaning routine to db.c git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1275 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
@@ -3134,6 +3134,12 @@ int char_lan_config_read(const char *lancfgName){
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int char_db_final(void *key,void *data,va_list ap)
|
||||
{
|
||||
struct mmo_charstatus *p = data;
|
||||
if (p) aFree(p);
|
||||
return 0;
|
||||
}
|
||||
void do_final(void) {
|
||||
printf("Doing final stage...\n");
|
||||
//mmo_char_sync();
|
||||
@@ -3162,9 +3168,12 @@ void do_final(void) {
|
||||
|
||||
delete_session(login_fd);
|
||||
delete_session(char_fd);
|
||||
numdb_final(char_db_, char_db_final);
|
||||
exit_dbn();
|
||||
|
||||
mysql_close(&mysql_handle);
|
||||
mysql_close(&lmysql_handle);
|
||||
timer_final();
|
||||
|
||||
printf("ok! all done...\n");
|
||||
}
|
||||
|
||||
@@ -709,6 +709,35 @@ int inter_guild_sql_init()
|
||||
return 0;
|
||||
}
|
||||
|
||||
int guild_expcache_db_final (void *k, void *data, va_list ap) { return 0; }
|
||||
int guild_infoevent_db_final (void *k, void *data, va_list ap) { return 0; }
|
||||
int guild_castleinfoevent_db_final (void *k, void *data, va_list ap) { return 0; }
|
||||
int guild_db_final (void *k, void *data, va_list ap)
|
||||
{
|
||||
struct guild *g = data;
|
||||
if (g) aFree(g);
|
||||
return 0;
|
||||
}
|
||||
int castle_db_final (void *k, void *data, va_list ap)
|
||||
{
|
||||
struct guild_castle *gc = data;
|
||||
if (gc) aFree(gc);
|
||||
return 0;
|
||||
}
|
||||
void inter_guild_sql_final()
|
||||
{
|
||||
if (guild_pt) aFree(guild_pt);
|
||||
if (guild_pt2) aFree(guild_pt2);
|
||||
if (guildcastle_pt) aFree(guildcastle_pt);
|
||||
|
||||
numdb_final(guild_db_, guild_db_);
|
||||
numdb_final(castle_db_, castle_db_final);
|
||||
numdb_final(guild_expcache_db_, guild_expcache_db_final);
|
||||
numdb_final(guild_infoevent_db_, guild_infoevent_db_final);
|
||||
numdb_final(guild_castleinfoevent_db_, guild_castleinfoevent_db_final);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Get guild by its name
|
||||
struct guild* search_guildname(char *str)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
int inter_guild_parse_frommap(int fd);
|
||||
int inter_guild_sql_init();
|
||||
void inter_guild_sql_final();
|
||||
int inter_guild_mapif_init(int fd);
|
||||
|
||||
int inter_guild_leave(int guild_id,int account_id,int char_id);
|
||||
|
||||
@@ -237,6 +237,10 @@ int inter_party_sql_init(){
|
||||
|
||||
return 0;
|
||||
}
|
||||
void inter_party_sql_final(){
|
||||
if (party_pt) aFree(party_pt);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Search for the party according to its name
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
int inter_party_parse_frommap(int fd);
|
||||
int inter_party_sql_init();
|
||||
void inter_party_sql_final();
|
||||
int inter_party_leave(int party_id,int account_id);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -136,6 +136,10 @@ int inter_pet_sql_init(){
|
||||
|
||||
return 0;
|
||||
}
|
||||
void inter_pet_sql_final(){
|
||||
if (pet_pt) aFree(pet_pt);
|
||||
return;
|
||||
}
|
||||
//----------------------------------
|
||||
int inter_pet_delete(int pet_id){
|
||||
printf("request delete pet: %d.......\n",pet_id);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define _INT_PET_H_
|
||||
|
||||
int inter_pet_init();
|
||||
void inter_pet_sql_final();
|
||||
int inter_pet_save();
|
||||
int inter_pet_delete(int pet_id);
|
||||
|
||||
|
||||
@@ -166,6 +166,13 @@ int inter_storage_sql_init(){
|
||||
|
||||
return 1;
|
||||
}
|
||||
// storage data finalize
|
||||
void inter_storage_sql_final()
|
||||
{
|
||||
if (storage_pt) aFree(storage_pt);
|
||||
if (guild_storage_pt) aFree(guild_storage_pt);
|
||||
return;
|
||||
}
|
||||
// q?f[^?
|
||||
int inter_storage_delete(int account_id)
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define _INT_STORAGE_H_
|
||||
|
||||
int inter_storage_sql_init();
|
||||
void inter_storage_sql_final();
|
||||
int inter_storage_delete(int account_id);
|
||||
int inter_guild_storage_delete(int guild_id);
|
||||
|
||||
|
||||
@@ -290,12 +290,32 @@ int inter_init(const char *file)
|
||||
inter_pet_sql_init();
|
||||
inter_accreg_sql_init();
|
||||
|
||||
atexit(inter_final);
|
||||
|
||||
//printf ("interserver timer initializing : %d sec...\n",autosave_interval);
|
||||
//i=add_timer_interval(gettick()+autosave_interval,inter_save_timer,0,0,autosave_interval);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// finalize
|
||||
int wis_db_final (void *k, void *data, va_list ap) {
|
||||
struct WisData *p = data;
|
||||
if (p) aFree(p);
|
||||
return 0;
|
||||
}
|
||||
void inter_final() {
|
||||
numdb_final(wis_db, wis_db_final);
|
||||
|
||||
inter_guild_sql_final();
|
||||
inter_storage_sql_final();
|
||||
inter_party_sql_final();
|
||||
inter_pet_sql_final();
|
||||
|
||||
if (accreg_pt) aFree(accreg_pt);
|
||||
return;
|
||||
}
|
||||
|
||||
int inter_mapif_init(int fd) {
|
||||
inter_guild_mapif_init(fd);
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
#define _INTER_H_
|
||||
|
||||
int inter_init(const char *file);
|
||||
void inter_final();
|
||||
int inter_parse_frommap(int fd);
|
||||
int inter_mapif_init(int fd);
|
||||
|
||||
|
||||
int inter_check_length(int fd,int length);
|
||||
|
||||
int inter_log(char *fmt,...);
|
||||
|
||||
Reference in New Issue
Block a user