Skip to content

Commit

Permalink
Fix #12388: Vehicle::CopyVehicleConfigAndStatistics not releasing uni…
Browse files Browse the repository at this point in the history
…t number (#12389)
  • Loading branch information
JGRennison committed Mar 27, 2024
1 parent b8b0181 commit 433484c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/train_cmd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1336,8 +1336,7 @@ CommandCost CmdMoveRailVehicle(DoCommandFlag flags, VehicleID src_veh, VehicleID
}
/* Remove stuff not valid anymore for non-front engines. */
DeleteVehicleOrders(src);
Company::Get(src->owner)->freeunits[src->type].ReleaseID(src->unitnumber);
src->unitnumber = 0;
src->ReleaseUnitNumber();
src->name.clear();
}

Expand Down
9 changes: 9 additions & 0 deletions src/vehicle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2401,6 +2401,15 @@ void Vehicle::ResetRefitCaps()
for (Vehicle *v = this; v != nullptr; v = v->Next()) v->refit_cap = v->cargo_cap;
}

/**
* Release the vehicle's unit number.
*/
void Vehicle::ReleaseUnitNumber()
{
Company::Get(this->owner)->freeunits[this->type].ReleaseID(this->unitnumber);
this->unitnumber = 0;
}

/**
* Handle the loading of the vehicle; when not it skips through dummy
* orders and does nothing in all other cases.
Expand Down
3 changes: 3 additions & 0 deletions src/vehicle_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,8 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist

void ResetRefitCaps();

void ReleaseUnitNumber();

/**
* Copy certain configurations and statistics of a vehicle after successful autoreplace/renew
* The function shall copy everything that cannot be copied by a command (like orders / group etc),
Expand All @@ -760,6 +762,7 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist
{
this->CopyConsistPropertiesFrom(src);

this->ReleaseUnitNumber();
this->unitnumber = src->unitnumber;

this->current_order = src->current_order;
Expand Down

0 comments on commit 433484c

Please sign in to comment.