From 3ee8c76fa8fb9c6ca49c0d4ea85b538126aa9ac2 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 15 Dec 2015 00:01:32 +0000 Subject: [PATCH] Fix desync caused by "train too heavy" advice message. _current_company was changed in an unsafe and non-deterministic way. --- src/vehicle.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index a23ab740eb..1717e4ad04 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -914,15 +914,14 @@ void CallVehicleTicks() case VEH_TRAIN: if (HasBit(Train::From(v)->flags, VRF_TOO_HEAVY)) { - _current_company = v->owner; - if (IsLocalCompany()) { + if (v->owner == _local_company) { SetDParam(0, v->index); SetDParam(1, STR_ERROR_TRAIN_TOO_HEAVY); AddVehicleNewsItem(STR_ERROR_TRAIN_TOO_HEAVY, NT_ADVICE, v->index); - ClrBit(Train::From(v)->flags, VRF_TOO_HEAVY); } - _current_company = OWNER_NONE; + ClrBit(Train::From(v)->flags, VRF_TOO_HEAVY); } + /* FALL THROUGH */ case VEH_ROAD: case VEH_AIRCRAFT: case VEH_SHIP: {