Ver Fonte

Added error messages when trying to place objects on invalid map coordinates (quick patch for bugreport:419)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11737 54d463be-8e91-2dee-dedb-b68131a5f0ec
ultramage há 17 anos atrás
pai
commit
7b0200e6dc
2 ficheiros alterados com 11 adições e 4 exclusões
  1. 1 0
      Changelog-Trunk.txt
  2. 10 4
      src/map/map.c

+ 1 - 0
Changelog-Trunk.txt

@@ -4,6 +4,7 @@ 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/11/16
+	* Added error messages when trying to place objects on invalid map coords
 	* Fixed Divine Protection working against players (bugreport:410)
 2007/11/15
 	* Fixed some homunculus skill offset calculation mistakes (bugreport:363)

+ 10 - 4
src/map/map.c

@@ -333,17 +333,23 @@ int map_addblock_sub (struct block_list *bl, int flag)
 
 	if (bl->prev != NULL) {
 		if(battle_config.error_log)
-			ShowError("map_addblock error : bl->prev != NULL\n");
+			ShowError("map_addblock: bl->prev != NULL\n");
 		return 0;
 	}
 
 	m = bl->m;
 	x = bl->x;
 	y = bl->y;
-	if (m < 0 || m >= map_num ||
-		x < 0 || x >= map[m].xs ||
-		y < 0 || y >= map[m].ys)
+	if( m < 0 || m >= map_num )
+	{
+		ShowError("map_addblock: invalid map id (%d), only %d are loaded.\n", m, map_num);
 		return 1;
+	}
+	if( x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys )
+	{
+		ShowError("map_addblock: out-of-bounds coordinates (\"%s\",%d,%d), map is %dx%d\n", map[m].name, x, y, map[m].xs, map[m].ys);
+		return 1;
+	}
 	
 #ifdef CELL_NOSTACK
 	map_addblcell(bl);