# HG changeset patch # User frosch # Date 1219444941 0 # Node ID 49ed9790d079b05353350d57fc35d2239d2f5154 # Parent 6ec0621a124d4e3b3b4dfb99224ed380ce149331 (svn r14131) -Fix (r13952) [FS#2250]: The reservation of adjacent stations was sometimes not freed correctly. (michi_cc) diff -r 6ec0621a124d -r 49ed9790d079 src/train_cmd.cpp --- a/src/train_cmd.cpp Fri Aug 22 22:28:26 2008 +0000 +++ b/src/train_cmd.cpp Fri Aug 22 22:42:21 2008 +0000 @@ -2464,6 +2464,7 @@ TileIndex tile = origin != INVALID_TILE ? origin : v->tile; Trackdir td = orig_td != INVALID_TRACKDIR ? orig_td : GetVehicleTrackdir(v); bool free_tile = tile != v->tile || !(IsRailwayStationTile(v->tile) || IsTileType(v->tile, MP_TUNNELBRIDGE)); + StationID station_id = IsRailwayStationTile(v->tile) ? GetStationIndex(v->tile) : INVALID_STATION; /* Don't free reservation if it's not ours. */ if (TracksOverlap(GetReservedTrackbits(tile) | TrackToTrackBits(TrackdirToTrack(td)))) return; @@ -2498,7 +2499,7 @@ } /* Don't free first station/bridge/tunnel if we are on it. */ - if (free_tile || (!ft.m_is_station && !ft.m_is_tunnel && !ft.m_is_bridge)) ClearPathReservation(tile, td); + if (free_tile || (!(ft.m_is_station && GetStationIndex(ft.m_new_tile) == station_id) && !ft.m_is_tunnel && !ft.m_is_bridge)) ClearPathReservation(tile, td); free_tile = true; }