Enabled DB_OPT_RELEASE_DATA for several DBMaps to simplify data freeing.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15644 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
gepard1984 2012-03-01 23:21:45 +00:00
parent 57de7584e8
commit 17bb9ae684
4 changed files with 20 additions and 59 deletions

View File

@ -1914,12 +1914,6 @@ bool guild_isallied(int guild_id, int guild_id2)
return( i < MAX_GUILDALLIANCE && g->alliance[i].opposition == 0 );
}
static int guild_infoevent_db_final(DBKey key,void *data,va_list ap)
{
aFree(data);
return 0;
}
static int guild_expcache_db_final(DBKey key,void *data,va_list ap)
{
ers_free(expcache_ers, data);
@ -1940,9 +1934,9 @@ void do_init_guild(void)
guild_db=idb_alloc(DB_OPT_RELEASE_DATA);
castle_db=idb_alloc(DB_OPT_BASE);
guild_expcache_db=idb_alloc(DB_OPT_BASE);
guild_infoevent_db=idb_alloc(DB_OPT_BASE);
guild_infoevent_db=idb_alloc(DB_OPT_BASE|DB_OPT_RELEASE_DATA);
expcache_ers = ers_new(sizeof(struct guild_expcache));
guild_castleinfoevent_db=idb_alloc(DB_OPT_BASE);
guild_castleinfoevent_db=idb_alloc(DB_OPT_BASE|DB_OPT_RELEASE_DATA);
sv_readdb(db_path, "castle_db.txt", ',', 4, 5, -1, &guild_read_castledb);
@ -1957,10 +1951,10 @@ void do_init_guild(void)
void do_final_guild(void)
{
guild_db->destroy(guild_db,NULL);
db_destroy(guild_db);
castle_db->destroy(castle_db,guild_castle_db_final);
guild_expcache_db->destroy(guild_expcache_db,guild_expcache_db_final);
guild_infoevent_db->destroy(guild_infoevent_db,guild_infoevent_db_final);
guild_castleinfoevent_db->destroy(guild_castleinfoevent_db,guild_infoevent_db_final);
db_destroy(guild_infoevent_db);
db_destroy(guild_castleinfoevent_db);
ers_destroy(expcache_ers);
}

View File

@ -422,21 +422,11 @@ int pc_group_id2level(int group_id)
*/
void do_init_pc_groups(void)
{
pc_group_db = idb_alloc(DB_OPT_BASE);
pc_group_db = idb_alloc(DB_OPT_RELEASE_DATA);
pc_groupname_db = stridb_alloc(DB_OPT_DUP_KEY, 0);
read_config();
}
/**
* DBApply helper function for do_final_pc_groups
* @private
*/
static int group_db_free(DBKey key, void *data, va_list args)
{
aFree((GroupSettings*)data);
return 1;
}
/**
* Finalize PC Groups: free DBMaps and config.
* @public
@ -444,7 +434,7 @@ static int group_db_free(DBKey key, void *data, va_list args)
void do_final_pc_groups(void)
{
if (pc_group_db != NULL)
pc_group_db->destroy(pc_group_db, group_db_free);
db_destroy(pc_group_db);
if (pc_groupname_db != NULL )
db_destroy(pc_groupname_db);
destroy_config();

View File

@ -3634,24 +3634,10 @@ int script_config_read(char *cfgName)
return 0;
}
static int do_final_userfunc_sub (DBKey key,void *data,va_list ap)
static int db_script_free_code_sub(DBKey key, void *data, va_list ap)
{
struct script_code *code = (struct script_code *)data;
if(code){
script_free_vars( &code->script_vars );
aFree( code->script_buf );
aFree( code );
}
return 0;
}
static int do_final_autobonus_sub (DBKey key,void *data,va_list ap)
{
struct script_code *script = (struct script_code *)data;
if( script )
script_free_code(script);
if (data)
script_free_code(data);
return 0;
}
@ -3807,9 +3793,9 @@ int do_final_script()
mapreg_final();
scriptlabel_db->destroy(scriptlabel_db,NULL);
userfunc_db->destroy(userfunc_db,do_final_userfunc_sub);
autobonus_db->destroy(autobonus_db, do_final_autobonus_sub);
db_destroy(scriptlabel_db);
userfunc_db->destroy(userfunc_db, db_script_free_code_sub);
autobonus_db->destroy(autobonus_db, db_script_free_code_sub);
if(sleep_db) {
struct linkdb_node *n = (struct linkdb_node *)sleep_db;
while(n) {
@ -3833,7 +3819,7 @@ int do_final_script()
int do_init_script()
{
userfunc_db=strdb_alloc(DB_OPT_DUP_KEY,0);
scriptlabel_db=strdb_alloc((DBOptions)(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA),50);
scriptlabel_db=strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA,50);
autobonus_db = strdb_alloc(DB_OPT_DUP_KEY,0);
mapreg_init();
@ -3843,8 +3829,8 @@ int do_init_script()
int script_reload()
{
userfunc_db->clear(userfunc_db,do_final_userfunc_sub);
scriptlabel_db->clear(scriptlabel_db, NULL);
userfunc_db->clear(userfunc_db, db_script_free_code_sub);
db_clear(scriptlabel_db);
if(sleep_db) {
struct linkdb_node *n = (struct linkdb_node *)sleep_db;

View File

@ -14723,10 +14723,9 @@ int skill_blockpc_end(int tid, unsigned int tick, int id, intptr_t data)
}
cursor++;
}
if( cursor == 0 ) {
if( cursor == 0 )
idb_remove(skillcd_db,sd->status.char_id);
aFree(cd);
} else
else
cd->cursor = cursor;
}
@ -15688,7 +15687,7 @@ int do_init_skill (void)
group_db = idb_alloc(DB_OPT_BASE);
skillunit_db = idb_alloc(DB_OPT_BASE);
skillcd_db = idb_alloc(DB_OPT_BASE);
skillcd_db = idb_alloc(DB_OPT_RELEASE_DATA);
skill_unit_ers = ers_new(sizeof(struct skill_unit_group));
skill_timer_ers = ers_new(sizeof(struct skill_timerskill));
@ -15703,20 +15702,12 @@ int do_init_skill (void)
return 0;
}
int skillcd_db_final(DBKey key, void *data, va_list args)
{
struct skillcd *s = (struct skillcd*)data;
if( s != NULL)
aFree(s);
return 0;
}
int do_final_skill(void)
{
db_destroy(skilldb_name2id);
db_destroy(group_db);
db_destroy(skillunit_db);
skillcd_db->destroy(skillcd_db, skillcd_db_final);
db_destroy(skillcd_db);
ers_destroy(skill_unit_ers);
ers_destroy(skill_timer_ers);
return 0;