Changeset - r3671:e738f9deaed9
[Not reviewed]
master
0 3 0
Darkvater - 19 years ago 2006-04-26 21:48:22
darkvater@openttd.org
(svn r4586) - Codechange: Recursive commands that rely on _error_message to handle success/failure can fail if a recursive call fails but doesn't set the error message, thus resulting in an old, possibly erroneous being used (see FS#130 prior to r4585). Now properly reset the global variable _error_message in these cases.
3 files changed with 4 insertions and 3 deletions:
0 comments (0 inline, 0 general)
clear_cmd.c
Show inline comments
 
@@ -197,7 +197,6 @@ int32 CmdTerraformLand(TileIndex tile, u
 

	
 
	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 

	
 
	_error_message = INVALID_STRING_ID;
 
	_terraform_err_tile = 0;
 

	
 
	ts.direction = direction = p2 ? 1 : -1;
rail_cmd.c
Show inline comments
 
@@ -511,8 +511,8 @@ static int32 CmdRailTrackHelper(TileInde
 
		ret = DoCommand(tile, railtype, TrackdirToTrack(trackdir), flags, (mode == 0) ? CMD_BUILD_SINGLE_RAIL : CMD_REMOVE_SINGLE_RAIL);
 

	
 
		if (CmdFailed(ret)) {
 
			if ((_error_message != STR_1007_ALREADY_BUILT) && (mode == 0))
 
				break;
 
			if ((_error_message != STR_1007_ALREADY_BUILT) && (mode == 0)) break;
 
			_error_message = INVALID_STRING_ID;
 
		} else
 
			total_cost += ret;
 

	
 
@@ -771,6 +771,7 @@ static int32 CmdSignalTrackHelper(TileIn
 
			 * This includes vehicles on track, competitor's tracks, etc. */
 
			if (CmdFailed(ret)) {
 
				if (_error_message != STR_1005_NO_SUITABLE_RAILROAD_TRACK && mode != 1) return CMD_ERROR;
 
				_error_message = INVALID_STRING_ID;
 
			} else {
 
				error = false;
 
				total_cost += ret;
road_cmd.c
Show inline comments
 
@@ -474,6 +474,7 @@ int32 CmdBuildLongRoad(TileIndex end_til
 
		ret = DoCommand(tile, bits, 0, flags, CMD_BUILD_ROAD);
 
		if (CmdFailed(ret)) {
 
			if (_error_message != STR_1007_ALREADY_BUILT) return CMD_ERROR;
 
			_error_message = INVALID_STRING_ID;
 
		} else {
 
			cost += ret;
 
		}
0 comments (0 inline, 0 general)