From bfa65c105a93d3f3021e82b5c7f4cc1bddb26b74 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Apr 2008 22:10:04 +0000 Subject: Update to Auth Glitch fix: moved unit_free_pc back to where it was and updated it so unit_free_pc just tells the script to end(not hard delete). (bugreport:1214) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12481 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 3 +++ src/map/chrif.c | 3 --- src/map/pc.c | 3 +++ src/map/unit.c | 9 ++++----- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 449b2eef0..b537b4b1a 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. 2008/04/04 + * Update to Auth Glitch fix: moved unit_free_pc back to where it was + - and updated it so unit_free_pc just tells the script to end + - (not hard delete). (r12481) [Kevin] * Updated mob_db.sql to latest. * Fixed a little bug in Kevin's commit (r12473) [Toms] * Bug fixes for Auth Glitch and Map server crash through script warp when diff --git a/src/map/chrif.c b/src/map/chrif.c index 239880f88..615755fd0 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -400,9 +400,6 @@ int chrif_changemapserverack(int account_id, int login_id1, int login_id2, int c } else clif_changemapserver(node->sd, map_index, x, y, ntohl(ip), ntohs(port)); - //Free session data from this map server [Kevin] - unit_free_pc(node->sd); - //Player has been saved already, remove him from memory. [Skotlex] chrif_auth_delete(account_id, char_id, ST_MAPCHANGE); diff --git a/src/map/pc.c b/src/map/pc.c index e55ae2014..efdacae53 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3595,6 +3595,9 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y chrif_save(sd,2); chrif_changemapserver(sd, ip, (short)port); + //Free session data from this map server [Kevin] + unit_free_pc(node->sd); + return 0; } diff --git a/src/map/unit.c b/src/map/unit.c index ea4cda9f5..252b65188 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1838,12 +1838,11 @@ int unit_free(struct block_list *bl, int clrtype) sd->regstr = NULL; sd->regstr_num = 0; } + + //Tell the script to end, not delete it, it will free itself when necessary [Kevin] if (sd->st) { - if (sd->st->stack) - script_free_stack (sd->st->stack); - aFree(sd->st); - sd->st = NULL; - sd->npc_id = 0; + sd->st->rid = 0; + sd->st->state = 2; } } else if( bl->type == BL_PET ) { struct pet_data *pd = (struct pet_data*)bl; -- cgit v1.2.3-70-g09d2