changeset 11945:2064815ee61e draft

(svn r16348) -Fix (r16280): buoys with invalid station ID could be left in the game
author smatz <smatz@openttd.org>
date Mon, 18 May 2009 00:33:24 +0000
parents 0eb2a7a73a5f
children d5716f5a9844
files src/station_cmd.cpp src/terraform_gui.cpp
diffstat 2 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2086,8 +2086,8 @@
 
 static CommandCost RemoveBuoy(Station *st, DoCommandFlag flags)
 {
-	/* XXX: strange stuff */
-	if (!Company::IsValidID(_current_company)) return_cmd_error(INVALID_STRING_ID);
+	/* XXX: strange stuff, allow clearing as invalid company when clearing landscape */
+	if (!Company::IsValidID(_current_company) && !(flags & DC_BANKRUPT)) return_cmd_error(INVALID_STRING_ID);
 
 	TileIndex tile = st->dock_tile;
 
--- a/src/terraform_gui.cpp
+++ b/src/terraform_gui.cpp
@@ -640,8 +640,8 @@
 		Station *st;
 		FOR_ALL_STATIONS(st) {
 			/* There can be buoys, remove them */
-			if (IsBuoyTile(st->xy)) DoCommand(st->xy, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
-			delete st;
+			if (st->IsBuoy() && IsBuoyTile(st->xy)) DoCommand(st->xy, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR);
+			if (st->facilities == 0) delete st;
 		}
 
 		/* The same for waypoints */