diff --git a/src/pbs.cpp b/src/pbs.cpp index 589ca63fb3..44123c6105 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -241,9 +241,7 @@ void UnreserveRailTrack(TileIndex tile, Track t) if (IsTunnelBridgePBS(tile)) { SetTunnelBridgeExitSignalState(tile, SIGNAL_STATE_RED); } else { - UpdateSignalsInBufferIfOwnerNotAddable(GetTileOwner(tile)); - AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); - UpdateSignalsInBuffer(); + UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, GetTileOwner(tile)); } } MarkBridgeOrTunnelDirtyOnReservationChange(tile, VMDF_NOT_MAP_MODE); diff --git a/src/signal.cpp b/src/signal.cpp index ef52a32807..5549564be3 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -822,9 +822,10 @@ void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner) */ SigSegState UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner) { - assert(_globset.IsEmpty()); + UpdateSignalsInBufferIfOwnerNotAddable(owner); _globset.Add(tile, side); + _last_owner = INVALID_OWNER; return UpdateSignalsInBuffer(owner); }