summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-05-18 00:33:24 +0000
committersmatz <smatz@openttd.org>2009-05-18 00:33:24 +0000
commitd1f9a90d3217709903530e58a641c18d61c96918 (patch)
treef343d71ee6affa1fdedc7d4edb82ebff6df5e789
parentb385cf31cbfe405cb29090e3ea31aa8115ff50b9 (diff)
downloadopenttd-d1f9a90d3217709903530e58a641c18d61c96918.tar.xz
(svn r16348) -Fix (r16280): buoys with invalid station ID could be left in the game
-rw-r--r--src/station_cmd.cpp4
-rw-r--r--src/terraform_gui.cpp4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index ef936ddfe..e3317fd43 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2086,8 +2086,8 @@ bool HasStationInUse(StationID station, CompanyID company)
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;
diff --git a/src/terraform_gui.cpp b/src/terraform_gui.cpp
index 729b20511..e56945903 100644
--- a/src/terraform_gui.cpp
+++ b/src/terraform_gui.cpp
@@ -640,8 +640,8 @@ static void ResetLandscapeConfirmationCallback(Window *w, bool confirmed)
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 */