Fix #12388: Vehicle::CopyVehicleConfigAndStatistics not releasing unit number (#12389)

This commit is contained in:
Jonathan G Rennison 2024-03-27 20:20:27 +00:00 committed by GitHub
parent b8b01818ca
commit 433484cda3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 2 deletions

View File

@ -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();
}

View File

@ -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.

View File

@ -750,6 +750,8 @@ public:
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),
@ -760,6 +762,7 @@ public:
{
this->CopyConsistPropertiesFrom(src);
this->ReleaseUnitNumber();
this->unitnumber = src->unitnumber;
this->current_order = src->current_order;