From 2097719f269edf2e42ada3ebe7854534d27b4e11 Mon Sep 17 00:00:00 2001 From: PeterN Date: Fri, 9 Jun 2023 22:18:55 +0100 Subject: [PATCH] Fix: Don't restore backed up vehicle name if it's no longer unique. (#10979) --- src/order_backup.cpp | 4 ++++ src/vehicle_cmd.cpp | 2 +- src/vehicle_func.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/order_backup.cpp b/src/order_backup.cpp index be4d7180ca..610540b89c 100644 --- a/src/order_backup.cpp +++ b/src/order_backup.cpp @@ -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 */ diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index c23445aa9c..ef301bbf59 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -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; diff --git a/src/vehicle_func.h b/src/vehicle_func.h index 06001f4f07..a8b63ac2d0 100644 --- a/src/vehicle_func.h +++ b/src/vehicle_func.h @@ -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 */