Mercurial > hg > openttd
diff src/vehicle.cpp @ 10103:9a884d182149 draft
(svn r14285) -Fix [FS#2263]: A train inside a wormhole could free the reservation of another train inside the wormhole.
author | michi_cc <michi_cc@openttd.org> |
---|---|
date | Tue, 09 Sep 2008 19:02:47 +0000 |
parents | 4923bdc50041 |
children | c41837ba7289 |
line wrap: on
line diff
--- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -178,6 +178,7 @@ static Vehicle *GetVehicleTunnelBridgeProc(Vehicle *v, void *data) { if (v->type != VEH_TRAIN && v->type != VEH_ROAD && v->type != VEH_SHIP) return NULL; + if (v == (const Vehicle *)data) return NULL; _error_message = VehicleInTheWayErrMsg(v); return v; @@ -187,12 +188,13 @@ * Finds vehicle in tunnel / bridge * @param tile first end * @param endtile second end + * @param ignore Ignore this vehicle when searching * @return true if the bridge has a vehicle */ -bool HasVehicleOnTunnelBridge(TileIndex tile, TileIndex endtile) +bool HasVehicleOnTunnelBridge(TileIndex tile, TileIndex endtile, const Vehicle *ignore) { - return HasVehicleOnPos(tile, NULL, &GetVehicleTunnelBridgeProc) || - HasVehicleOnPos(endtile, NULL, &GetVehicleTunnelBridgeProc); + return HasVehicleOnPos(tile, (void *)ignore, &GetVehicleTunnelBridgeProc) || + HasVehicleOnPos(endtile, (void *)ignore, &GetVehicleTunnelBridgeProc); }