Fixed Warp Portal code sometimes producing errors/crashes in the case where a priest enters his/her own warp (bugreport:270)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12189 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
ultramage 2008-02-10 22:40:50 +00:00
parent 1dd26ae46d
commit c12125ed84
2 changed files with 14 additions and 5 deletions

View File

@ -3,6 +3,9 @@ Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2008/02/10
* Fixed Warp Portal code sometimes producing errors/crashes in the case
where a priest enters his/her own warp (bugreport:270)
2008/02/08 2008/02/08
* Fixed wrong message in item group loading code (bugreport:936) * Fixed wrong message in item group loading code (bugreport:936)
* Fixed 'charisalpha' not working for the first char (bugreport:940) * Fixed 'charisalpha' not working for the first char (bugreport:940)

View File

@ -6530,11 +6530,17 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned
if(bl->type==BL_PC){ if(bl->type==BL_PC){
struct map_session_data *sd = (struct map_session_data *)bl; struct map_session_data *sd = (struct map_session_data *)bl;
if((!sd->chatID || battle_config.chat_warpportal) if((!sd->chatID || battle_config.chat_warpportal)
&& sd->ud.to_x == src->bl.x && sd->ud.to_y == src->bl.y) { && sd->ud.to_x == src->bl.x && sd->ud.to_y == src->bl.y)
if (pc_setpos(sd,sg->val3,sg->val2>>16,sg->val2&0xffff,3) == 0) { {
if (--sg->val1<=0) int x = sg->val2>>16;
skill_delunitgroup(NULL, sg); int y = sg->val2&0xffff;
} unsigned short m = sg->val3;
if( --sg->val1 <= 0 )
skill_delunitgroup(NULL, sg);
pc_setpos(sd,m,x,y,3);
sg = src->group; // avoid dangling pointer (pc_setpos can cause deletion of 'sg')
} }
} else } else
if(bl->type == BL_MOB && battle_config.mob_warp&2) if(bl->type == BL_MOB && battle_config.mob_warp&2)