Browse Source

- Fixed the delete_timer (@summons, alchemist plants) not invoking unit_free, hence causing memory leaks and the like.
- Applied jA's patch to fix a bug in the scripting engine in regards to priority of operators. Thanks to End of Exam for the information.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6161 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 years ago
parent
commit
c176a131f0
3 changed files with 8 additions and 2 deletions
  1. 4 0
      Changelog-Trunk.txt
  2. 2 0
      src/map/mob.c
  3. 2 2
      src/map/script.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2006/04/18
 2006/04/18
+	* Fixed the delete_timer (@summons, alchemist plants) not invoking
+	  unit_free, hence causing memory leaks and the like. [Skotlex]
+	* Applied jA's patch to fix a bug in the scripting engine in regards to
+	  priority of operators. Thanks to End of Exam for the information. [Skotlex]
 	* Removed message 592 from trade.c [Skotlex]
 	* Removed message 592 from trade.c [Skotlex]
 	* Added support for disabling mapflags on a mapflag line: [Skotlex]
 	* Added support for disabling mapflags on a mapflag line: [Skotlex]
 	  comodo.gat	mapflag	nomemo <- turns on nomemo mapflag
 	  comodo.gat	mapflag	nomemo <- turns on nomemo mapflag

+ 2 - 0
src/map/mob.c

@@ -1484,7 +1484,9 @@ int mob_timer_delete(int tid, unsigned int tick, int id, int data)
 	if (bl->type != BL_MOB)
 	if (bl->type != BL_MOB)
 		return 0; //??
 		return 0; //??
 //for Alchemist CANNIBALIZE [Lupus]
 //for Alchemist CANNIBALIZE [Lupus]
+	((TBL_MOB*)bl)->deletetimer = -1;
 	unit_remove_map(bl, 3);
 	unit_remove_map(bl, 3);
+	unit_free(bl);
 	return 0;
 	return 0;
 }
 }
 
 

+ 2 - 2
src/map/script.c

@@ -1201,7 +1201,7 @@ unsigned char* parse_subexpr(unsigned char *p,int limit)
 	}
 	}
 	tmpp=(char *) p;
 	tmpp=(char *) p;
 	if((op=C_NEG,*p=='-') || (op=C_LNOT,*p=='!') || (op=C_NOT,*p=='~')){
 	if((op=C_NEG,*p=='-') || (op=C_LNOT,*p=='!') || (op=C_NOT,*p=='~')){
-		p=parse_subexpr(p+1,100);
+		p=parse_subexpr(p+1,8);
 		add_scriptc(op);
 		add_scriptc(op);
 	} else
 	} else
 		p=parse_simpleexpr(p);
 		p=parse_simpleexpr(p);
@@ -1211,7 +1211,7 @@ unsigned char* parse_subexpr(unsigned char *p,int limit)
 		   (op=C_MUL,opl=7,len=1,*p=='*') ||
 		   (op=C_MUL,opl=7,len=1,*p=='*') ||
 		   (op=C_DIV,opl=7,len=1,*p=='/') ||
 		   (op=C_DIV,opl=7,len=1,*p=='/') ||
 		   (op=C_MOD,opl=7,len=1,*p=='%') ||
 		   (op=C_MOD,opl=7,len=1,*p=='%') ||
-		   (op=C_FUNC,opl=8,len=1,*p=='(') ||
+		   (op=C_FUNC,opl=9,len=1,*p=='(') ||
 		   (op=C_LAND,opl=1,len=2,*p=='&' && p[1]=='&') ||
 		   (op=C_LAND,opl=1,len=2,*p=='&' && p[1]=='&') ||
 		   (op=C_AND,opl=5,len=1,*p=='&') ||
 		   (op=C_AND,opl=5,len=1,*p=='&') ||
 		   (op=C_LOR,opl=0,len=2,*p=='|' && p[1]=='|') ||
 		   (op=C_LOR,opl=0,len=2,*p=='|' && p[1]=='|') ||