* 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:
celest
2005-03-23 15:26:52 +00:00
parent a2c00f0290
commit 91fb421a67
34 changed files with 326 additions and 134 deletions

View File

@@ -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");
}

View File

@@ -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)

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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);

View File

@@ -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,...);