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. */ /* Remove stuff not valid anymore for non-front engines. */
DeleteVehicleOrders(src); DeleteVehicleOrders(src);
Company::Get(src->owner)->freeunits[src->type].ReleaseID(src->unitnumber); src->ReleaseUnitNumber();
src->unitnumber = 0;
src->name.clear(); 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; 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 * Handle the loading of the vehicle; when not it skips through dummy
* orders and does nothing in all other cases. * orders and does nothing in all other cases.

View File

@ -750,6 +750,8 @@ public:
void ResetRefitCaps(); void ResetRefitCaps();
void ReleaseUnitNumber();
/** /**
* Copy certain configurations and statistics of a vehicle after successful autoreplace/renew * 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), * 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->CopyConsistPropertiesFrom(src);
this->ReleaseUnitNumber();
this->unitnumber = src->unitnumber; this->unitnumber = src->unitnumber;
this->current_order = src->current_order; this->current_order = src->current_order;