From 7d65a46135c8b8536f48f58ff2a0a26fd40932b6 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 25 Oct 2006 20:55:19 +0000 Subject: - Some cleaning of the pc_eventtimer and pc enqueue code, it should fix some memory leaks when the event counter does not matches with the actual number of queued timers during logout. - Minor typos, corrections, etc. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9072 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 3 +++ conf-tmpl/battle/battle.conf | 4 +++- conf-tmpl/battle/skill.conf | 2 +- src/map/log.c | 1 - src/map/npc.c | 4 ++-- src/map/pc.c | 44 ++++++++++++++++++++------------------------ 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index ee9d8a389..fd9d05f97 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/10/25 + * Some cleaning of the pc_eventtimer and pc enqueue code, it should fix + some memory leaks when the event counter does not matches with the actual + number of queued timers during logout. [Skotlex] * Fixed "skill_sp_override_grffile: yes" causing crashes when parsing Homuncuus/Guild skills. [Skotlex] * Made the exp bonus settings be adjustable: [Skotlex] diff --git a/conf-tmpl/battle/battle.conf b/conf-tmpl/battle/battle.conf index 30a136ee8..f7516836f 100644 --- a/conf-tmpl/battle/battle.conf +++ b/conf-tmpl/battle/battle.conf @@ -141,7 +141,9 @@ vit_penalty_count_lv: 3 attack_direction_change: 15 // For those who is set, attacks of Neutral element will not get any elemental -// modifiers (they will hit for full damage on Ghost types) (Note 4) +// adjustment (100% versus on all defense-elements) (Note 4) +// NOTE: This is the setting that makes it so non-players can hit for full +// damage against Ghost-type targets (eg: Ghostring wearing players). attack_attr_none: 14 // Rate at which equipment can break (base rate before it's modified by any skills) diff --git a/conf-tmpl/battle/skill.conf b/conf-tmpl/battle/skill.conf index 42c4486f0..87e37b4b2 100644 --- a/conf-tmpl/battle/skill.conf +++ b/conf-tmpl/battle/skill.conf @@ -132,7 +132,7 @@ traps_setting: 0 // Restrictions applied to the Alchemist's Summon Flora skill (add as necessary) // 1: Enable players to damage the floras outside of versus grounds. -// 3: Disable having different types out at the same time +// 2: Disable having different types out at the same time // (eg: forbid summoning anything except hydras when there's already // one hydra out) summon_flora_setting: 3 diff --git a/src/map/log.c b/src/map/log.c index bb061a062..556c7c414 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -212,7 +212,6 @@ int log_pick_mob(struct mob_data *md, const char *type, int nameid, int amount, return 1; //Logged } - int log_zeny(struct map_session_data *sd, char *type, struct map_session_data *src_sd, int amount) { // FILE *logfp; diff --git a/src/map/npc.c b/src/map/npc.c index 89538052d..4e982b69d 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -182,8 +182,8 @@ int npc_event_dequeue(struct map_session_data *sd) // clear the last event sd->eventqueue[MAX_EVENTQUEUE-1][0]=0; // add the timer - sd->eventtimer[ev]=add_timer(gettick()+100,pc_eventtimer,sd->bl.id,(int)name);//!!todo!! - + sd->eventtimer[ev]=add_timer(gettick()+100,pc_eventtimer,sd->bl.id,(int)name);//TODO: Someone wrote here "!!todo!!", but what the hell is missing? + sd->eventcount++; }else ShowWarning("npc_event_dequeue: event timer is full !\n"); } diff --git a/src/map/pc.c b/src/map/pc.c index 4a90929ea..c3e68a807 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6139,19 +6139,16 @@ int pc_eventtimer(int tid,unsigned int tick,int id,int data) if(sd==NULL) return 0; - for(i=0;i < MAX_EVENTTIMER;i++){ - if( sd->eventtimer[i]==tid ){ - sd->eventtimer[i]=-1; - npc_event(sd,p,0); - break; - } - } - if (p) aFree(p); - if(i==MAX_EVENTTIMER) { - if(battle_config.error_log) - ShowError("pc_eventtimer: no such event timer\n"); - } + for(i=0;i < MAX_EVENTTIMER && sd->eventtimer[i]!=tid; i++); + + if(i < MAX_EVENTTIMER){ + sd->eventtimer[i]=-1; + npc_event(sd,p,0); + sd->eventcount--; + } else if(battle_config.error_log) + ShowError("pc_eventtimer: no such event timer\n"); + if (p) aFree(p); return 0; } @@ -6162,20 +6159,19 @@ int pc_eventtimer(int tid,unsigned int tick,int id,int data) int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name) { int i; + char *evname; nullpo_retr(0, sd); - for(i=0;ieventtimer[i]==-1 ) - break; - if(ieventtimer[i]=add_timer(gettick()+tick, - pc_eventtimer,sd->bl.id,(int)evname); - sd->eventcount++; - } + for(i=0;ieventtimer[i]!=-1;i++); + + if(i==MAX_EVENTTIMER) + return 0; + + evname = aStrdup(name); + sd->eventtimer[i]=add_timer(gettick()+tick, + pc_eventtimer,sd->bl.id,(int)evname); + sd->eventcount++; return 0; } @@ -6246,9 +6242,9 @@ int pc_cleareventtimer(struct map_session_data *sd) char *p = (char *)(get_timer(sd->eventtimer[i])->data); delete_timer(sd->eventtimer[i],pc_eventtimer); sd->eventtimer[i]=-1; + sd->eventcount--; if (p) aFree(p); } - return 0; } -- cgit v1.2.3-70-g09d2