Mercurial > hg > openttd
changeset 1877:5cc49449518b draft
(svn r2383) - Fix: Monkey-testing turned up some command crashes.
author | Darkvater <Darkvater@openttd.org> |
---|---|
date | Mon, 30 May 2005 14:45:36 +0000 |
parents | b256dc2d327e |
children | ec266a8f43ef |
files | aircraft_cmd.c command.c misc_cmd.c |
diffstat | 3 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -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 +++ b/command.c @@ -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 +++ b/misc_cmd.c @@ -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(); }