Przeglądaj źródła

- Applied Rayce's dangling pointer fix when returning a temporary npc string variable (those starting with .@)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9864 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 18 lat temu
rodzic
commit
81b4f30221
2 zmienionych plików z 8 dodań i 0 usunięć
  1. 2 0
      Changelog-Trunk.txt
  2. 6 0
      src/map/script.c

+ 2 - 0
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

+ 6 - 0
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) {
 				// ' 変数は参照渡しでも良いが、参照元が設定されていないと
 				// 元のスクリプトの値を差してしまうので補正する。