From 1696ef64464820523fbbfc3f56a1cede03917d59 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) (cherry picked from commit 2097719f269edf2e42ada3ebe7854534d27b4e11) --- 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 c44a9a25f0..c806d2aa8a 100644 --- a/src/order_backup.cpp +++ b/src/order_backup.cpp @@ -16,6 +16,7 @@ #include "vehicle_base.h" #include "window_func.h" #include "station_map.h" +#include "vehicle_func.h" #include "safeguards.h" @@ -98,6 +99,9 @@ void OrderBackup::DoRestore(Vehicle *v) InvalidateWindowClassesData(WC_STATION_LIST, 0); } + /* Remove backed up name if it's no longer unique. */ + if (!this->name.empty() && !IsUniqueVehicleName(this->name.c_str())) 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 9eaa65142c..c8469d286f 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -827,7 +827,7 @@ CommandCost CmdDepotMassAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 * @param name Name to test. * @return True if the name is unique. */ -static bool IsUniqueVehicleName(const char *name) +bool IsUniqueVehicleName(const char *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 6c5664b1a8..87e67433c5 100644 --- a/src/vehicle_func.h +++ b/src/vehicle_func.h @@ -267,4 +267,6 @@ void CheckCargoCapacity(Vehicle *v); bool VehiclesHaveSameEngineList(const Vehicle *v1, const Vehicle *v2); bool VehiclesHaveSameOrderList(const Vehicle *v1, const Vehicle *v2); +bool IsUniqueVehicleName(const char *name); + #endif /* VEHICLE_FUNC_H */