gui/settings_dialog: Fix incorrect IP addresses display

- If after 'emplace_back()' the new 'size()' is greater than old 'capacity()' a reallocation takes place, in which case all references to the elements are invalidated.
This commit is contained in:
Dicot0721
2026-02-16 17:31:11 +08:00
committed by Zangetsu
parent 98f2267789
commit 3b42fa3587
+5 -2
View File
@@ -1366,13 +1366,16 @@ void draw_settings_dialog(GuiState &gui, EmuEnvState &emuenv) {
TextColoredCentered(GUI_COLOR_TEXT_MENUBAR, "Adhoc");
ImGui::Spacing();
const auto addrs = net_utils::get_all_assigned_addrs();
std::vector<std::string> addrsStrings;
std::vector<const char *> addrsSelect;
std::vector<const char *> nMaskSelect;
const auto addrs = net_utils::get_all_assigned_addrs();
addrsStrings.reserve(addrs.size());
addrsSelect.reserve(addrs.size());
nMaskSelect.reserve(addrs.size());
for (const auto &addr : addrs) {
addrsStrings.emplace_back(fmt::format("{} ({})", addr.addr, addr.name).c_str());
addrsStrings.emplace_back(fmt::format("{} ({})", addr.addr, addr.name));
addrsSelect.emplace_back(addrsStrings.back().c_str());
nMaskSelect.emplace_back(addr.netMask.c_str());
}