(svn r2383) - Fix: Monkey-testing turned up some command crashes.
authorDarkvater
Mon, 30 May 2005 14:45:36 +0000
changeset 1877 e7318705dd04
parent 1876 95c95857ec7b
child 1878 622765748231
(svn r2383) - Fix: Monkey-testing turned up some command crashes.
aircraft_cmd.c
command.c
misc_cmd.c
--- a/aircraft_cmd.c	Mon May 30 13:35:39 2005 +0000
+++ b/aircraft_cmd.c	Mon May 30 14:45:36 2005 +0000
@@ -170,7 +170,7 @@
 	Vehicle *vl[3], *v, *u, *w;
 	UnitID unit_num;
 	TileIndex tile = TILE_FROM_XY(x,y);
-	const AircraftVehicleInfo *avi = AircraftVehInfo(p1);
+	const AircraftVehicleInfo *avi;
 	Engine *e;
 
 	if (!IsEngineBuildable(p1, VEH_Aircraft)) return CMD_ERROR;
@@ -186,6 +186,7 @@
 
 	if (flags & DC_QUERY_COST) return value;
 
+	avi = AircraftVehInfo(p1);
 	// allocate 2 or 3 vehicle structs, depending on type
 	if (!AllocateVehicles(vl, (avi->subtype & 1) == 0 ? 3 : 2) ||
 				IsOrderPoolFull())
--- a/command.c	Mon May 30 13:35:39 2005 +0000
+++ b/command.c	Mon May 30 14:45:36 2005 +0000
@@ -428,6 +428,10 @@
 	// get pointer to command handler
 	assert((cmd & 0xFF) < lengthof(_command_proc_table));
 	proc = _command_proc_table[cmd & 0xFF].proc;
+	if (proc == NULL) {
+		_cmd_text = NULL;
+		return false;
+	}
 
 	// Some commands have a different output in dryrun than the realrun
 	//  e.g.: if you demolish a whole town, the dryrun would say okay.
--- a/misc_cmd.c	Mon May 30 13:35:39 2005 +0000
+++ b/misc_cmd.c	Mon May 30 14:45:36 2005 +0000
@@ -256,7 +256,7 @@
  */
 int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 {
-	if ((int32)p1 >= GAME_DIFFICULTY_NUM && p1 != (uint32)-1L) return CMD_ERROR;
+	if (p1 != (uint32)-1L && ((int32)p1 >= GAME_DIFFICULTY_NUM || (int32)p1 < 0)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		if (p1 != (uint32)-1L) {
@@ -267,7 +267,7 @@
 
 		/* If we are a network-client, update the difficult setting (if it is open).
 		 * Use this instead of just dirtying the window because we need to load in
-		* the new difficulty settings */
+		 * the new difficulty settings */
 		if (_networking && !_network_server && FindWindowById(WC_GAME_OPTIONS, 0) != NULL)
 			ShowGameDifficulty();
 	}