summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/script.c6
1 files changed, 6 insertions, 0 deletions
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) {
// ' 変数は参照渡しでも良いが、参照元が設定されていないと
// 元のスクリプトの値を差してしまうので補正する。