Fix: Don't restore backed up vehicle name if it's no longer unique. (#10979)

This commit is contained in:
PeterN 2023-06-09 22:18:55 +01:00 committed by GitHub
parent 6d597879d0
commit 2097719f26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 1 deletions

View File

@ -18,6 +18,7 @@
#include "station_map.h"
#include "order_cmd.h"
#include "group_cmd.h"
#include "vehicle_func.h"
#include "safeguards.h"
@ -83,6 +84,9 @@ void OrderBackup::DoRestore(Vehicle *v)
InvalidateWindowClassesData(WC_STATION_LIST, 0);
}
/* Remove backed up name if it's no longer unique. */
if (!IsUniqueVehicleName(this->name)) this->name.clear();
v->CopyConsistPropertiesFrom(this);
/* Make sure orders are in range */

View File

@ -746,7 +746,7 @@ CommandCost CmdDepotMassAutoReplace(DoCommandFlag flags, TileIndex tile, Vehicle
* @param name Name to test.
* @return True ifffffff the name is unique.
*/
static bool IsUniqueVehicleName(const std::string &name)
bool IsUniqueVehicleName(const std::string &name)
{
for (const Vehicle *v : Vehicle::Iterate()) {
if (!v->name.empty() && v->name == name) return false;

View File

@ -178,4 +178,6 @@ void CheckCargoCapacity(Vehicle *v);
bool VehiclesHaveSameEngineList(const Vehicle *v1, const Vehicle *v2);
bool VehiclesHaveSameOrderList(const Vehicle *v1, const Vehicle *v2);
bool IsUniqueVehicleName(const std::string &name);
#endif /* VEHICLE_FUNC_H */