diff --git a/base/cvd/cuttlefish/host/commands/cvd/parser/load_configs_parser.cpp b/base/cvd/cuttlefish/host/commands/cvd/parser/load_configs_parser.cpp index 08210787d73..ae0d29897a6 100644 --- a/base/cvd/cuttlefish/host/commands/cvd/parser/load_configs_parser.cpp +++ b/base/cvd/cuttlefish/host/commands/cvd/parser/load_configs_parser.cpp @@ -19,6 +19,8 @@ #include #include +#include +#include #include #include @@ -271,6 +273,29 @@ Result GenerateLoadDirectories( return result; } +std::vector FillEmptyInstanceNames( + std::vector instance_names) { + std::set used; + for (const auto& name : instance_names) { + if (name.empty()) { + continue; + } + used.insert(name); + } + int index = 1; + for (auto& name : instance_names) { + if (!name.empty()) { + continue; + } + while (used.find(std::to_string(index)) != used.end()) { + ++index; + } + name = std::to_string(index++); + used.insert(name); + } + return instance_names; +} + Result ParseCvdConfigs(const EnvironmentSpecification& launch, const LoadDirectories& load_directories) { CvdFlags flags{.launch_cvd_flags = CF_EXPECT(ParseLaunchCvdConfigs(launch)), @@ -286,6 +311,8 @@ Result ParseCvdConfigs(const EnvironmentSpecification& launch, for (const auto& instance: launch.instances()) { flags.instance_names.push_back(instance.name()); } + flags.instance_names = + FillEmptyInstanceNames(std::move(flags.instance_names)); return flags; }