summaryrefslogtreecommitdiff
path: root/src/train_cmd.cpp
diff options
context:
space:
mode:
authormichi_cc <michi_cc@openttd.org>2012-03-25 23:42:49 +0000
committermichi_cc <michi_cc@openttd.org>2012-03-25 23:42:49 +0000
commitf8b62a3c7a9191238d7dbfc3681edcdb6a781d72 (patch)
tree21d6855542cbce75986e538ca761d217f4742878 /src/train_cmd.cpp
parent1adb9a5c85f3773d3163b056ad0ed13a97347276 (diff)
downloadopenttd-f8b62a3c7a9191238d7dbfc3681edcdb6a781d72.tar.xz
(svn r24071) -Fix [FS#5093]: Reversing trains while they were entering or leaving a depot could lead to stuck trains.
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r--src/train_cmd.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index 4473c5265..101aeca0a 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -2200,6 +2200,8 @@ void FreeTrainTrackReservation(const Train *v, TileIndex origin, Trackdir orig_t
bool free_tile = tile != v->tile || !(IsRailStationTile(v->tile) || IsTileType(v->tile, MP_TUNNELBRIDGE));
StationID station_id = IsRailStationTile(v->tile) ? GetStationIndex(v->tile) : INVALID_STATION;
+ /* A train inside a depot can't have a reservation. */
+ if (v->track == TRACK_BIT_DEPOT) return;
/* Don't free reservation if it's not ours. */
if (TracksOverlap(GetReservedTrackbits(tile) | TrackToTrackBits(TrackdirToTrack(td)))) return;