Browse Source

* Added a crash check to Safety Wall
* Added some optimisations in clif_parse_MapMove

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

(no author) 20 years ago
parent
commit
11559451da
3 changed files with 15 additions and 7 deletions
  1. 7 1
      Changelog.txt
  2. 1 1
      src/map/battle.c
  3. 7 5
      src/map/clif.c

+ 7 - 1
Changelog.txt

@@ -1,5 +1,10 @@
 Date	Added
 
+01/29
+        * Added a crash check to Safety Wall, thanks to LebrEf[TaVu] / Freya for
+          pointing it out [celest]
+        * Added some optimisations in clif_parse_MapMove, by Ilpalazzo-sama [celest]
+
 01/28
         * Fixed a typo that was causing /in to always report failure even when the
           name was removed from the ignore list [celest]
@@ -22,7 +27,8 @@ Date	Added
         * Kick all characters when the char server disconnects from the map
           server [celest]
         * Added @changelook command for spriters to test view ID's [celest]
-        * Added a check to Pneuma to prevent crashing [celest]
+        * Added a check to Pneuma to prevent crashing, thanks to LebrEf[TaVu]/Freya for
+          pointing it out [celest] [celest]
         * Tweaked garbage collection code after feedback from users
         [SVN 1002: MouseJstr]
 	* Fixed TRADE exploits (it cures proxy hack / vending+trade hack) thanks to Freya [Lupus]

+ 1 - 1
src/map/battle.c

@@ -258,7 +258,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
 			struct skill_unit *unit;
 			unit = map_find_skill_unit_oncell(bl->m,bl->x,bl->y,MG_SAFETYWALL);
 			if (unit) {
-				if ((--unit->group->val2)<=0)
+				if (unit->group && (--unit->group->val2)<=0)
 					skill_delunit(unit);
 				damage=0;
 			} else {

+ 7 - 5
src/map/clif.c

@@ -8000,17 +8000,19 @@ int clif_message(struct block_list *bl, char* msg)
  */
 void clif_parse_MapMove(int fd, struct map_session_data *sd) {
 // /m /mapmove (as @rura GM command)
-	char output[100];
+	char output[30]; // 17+4+4=26, 30 max.
 	char map_name[17];
 
 	nullpo_retv(sd);
 
-	memset(output, '\0', sizeof(output));
-	memset(map_name, '\0', sizeof(map_name));
+//	not needed at all as far as sprintf is used	// [Ilpalazzo-sama]
+//	memset(output, '\0', sizeof(output));
+//	not needed -- map_name[16]='\0'; will do
+//	memset(map_name, '\0', sizeof(map_name));
 
-	if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) &&
-	    (pc_isGM(sd) >= get_atcommand_level(AtCommand_MapMove))) {
+	if (battle_config.atc_gmonly == 0 || (pc_isGM(sd) >= get_atcommand_level(AtCommand_MapMove))) {
 		memcpy(map_name, RFIFOP(fd,2), 16);
+		map_name[16]='\0';
 		sprintf(output, "%s %d %d", map_name, RFIFOW(fd,18), RFIFOW(fd,20));
 		atcommand_rura(fd, sd, "@rura", output);
 	}