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 */