From df9a6d24a0bc8649a7a1615777aedea4daf447bd Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 7 Jul 2012 15:35:28 +0000 Subject: [PATCH] (svn r24382) -Fix: Call Vehicle::IsStoppedInDepot only for the first vehicle in a chain (i.e. primary vehicle or free wagon). --- src/autoreplace_cmd.cpp | 2 +- src/roadveh_cmd.cpp | 2 ++ src/train_cmd.cpp | 2 ++ src/vehicle_cmd.cpp | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 5ef230e642..95669a244b 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -702,7 +702,7 @@ CommandCost CmdAutoreplaceVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1 if (!was_stopped) cost.AddCost(CmdStartStopVehicle(v, true)); if (cost.Failed()) return cost; - assert(v->IsStoppedInDepot()); + assert(free_wagon || v->IsStoppedInDepot()); /* We have to construct the new vehicle chain to test whether it is valid. * Vehicle construction needs random bits, so we have to save the random seeds diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index f29efb60aa..1798e75a38 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -356,6 +356,8 @@ CommandCost CmdTurnRoadVeh(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 RoadVehicle *v = RoadVehicle::GetIfValid(p1); if (v == NULL) return CMD_ERROR; + if (!v->IsPrimaryVehicle()) return CMD_ERROR; + CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 2a639666d5..c78300f19d 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1934,6 +1934,8 @@ CommandCost CmdForceTrainProceed(TileIndex tile, DoCommandFlag flags, uint32 p1, Train *t = Train::GetIfValid(p1); if (t == NULL) return CMD_ERROR; + if (!t->IsPrimaryVehicle()) return CMD_ERROR; + CommandCost ret = CheckOwnership(t->owner); if (ret.Failed()) return ret; diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index 8899b5f32e..cf225a210c 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -991,6 +991,7 @@ CommandCost CmdSendVehicleToDepot(TileIndex tile, DoCommandFlag flags, uint32 p1 Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 20)); if (v == NULL) return CMD_ERROR; + if (!v->IsPrimaryVehicle()) return CMD_ERROR; return v->SendToDepot(flags, (DepotCommand)(p1 & DEPOT_COMMAND_MASK)); }