diff options
-rw-r--r-- | Changelog-Trunk.txt | 2 | ||||
-rw-r--r-- | src/map/script.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 2db766703..519e3036b 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,8 @@ 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. 2007/02/13 + * Applied Rayce's dangling pointer fix when returning a temporary npc + string variable (those starting with .@) * Required Weapon, ammo, and skill state are now only checked on begin casting, instead of both on begin and end casting. 2007/02/12 diff --git a/src/map/script.c b/src/map/script.c index 832647b7f..e4f7e7e5e 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -4325,6 +4325,12 @@ BUILDIN_FUNC(return) if( name[0] == '.' && name[1] == '@') { // '@ 変数を参照渡しにすると危険なので値渡しにする get_val(st,sd); + //Fix dangling pointer crash due when returning a temporary + // script variable (from Rayce/jA) + if(isstr(sd)) { + sd->type = C_STR; + sd->u.str = (char *)aStrdup(sd->u.str); + } } else if( name[0] == '.' && !sd->ref) { // ' 変数は参照渡しでも良いが、参照元が設定されていないと // 元のスクリプトの値を差してしまうので補正する。 |