From 74f9be8f2c1dca108b88449e6935c61442cbf829 Mon Sep 17 00:00:00 2001 From: smatz Date: Sat, 12 Jan 2008 19:33:25 +0000 Subject: (svn r11821) -Fix (r11802): 'optimization assert' when removing crashed wagon in some cases --- src/train_cmd.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index a8fdc8ba1..06daa39bc 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3131,20 +3131,15 @@ static void DeleteLastWagon(Vehicle *v) delete v; - if (track != TRACK_BIT_DEPOT && track != TRACK_BIT_WORMHOLE) - SetSignalsOnBothDir(tile, (Track)(FIND_FIRST_BIT(track))); - /* Check if the wagon was on a road/rail-crossing and disable it if no * others are on it */ DisableTrainCrossing(tile); - if (track == TRACK_BIT_WORMHOLE) { // inside a tunnel / bridge - TileIndex endtile = GetOtherTunnelBridgeEnd(tile); - - if (GetVehicleTunnelBridge(tile, endtile) != NULL) return; // tunnel / bridge is busy - - /* v->direction is "random", so it cannot be used to determine the direction of the track */ + /* Update signals */ + if (IsTileType(tile, MP_TUNNELBRIDGE) || IsTileDepotType(tile, TRANSPORT_RAIL)) { UpdateSignalsOnSegment(tile, INVALID_DIAGDIR); + } else { + SetSignalsOnBothDir(tile, (Track)(FIND_FIRST_BIT(track))); } } -- cgit v1.2.3-70-g09d2