From a598ce8d6127f750a0c6e514a51111b247186c41 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Tue, 25 Mar 2025 10:48:02 +0800 Subject: [PATCH] FIX: gui: fix the crash after first loading configs caused by printer_model missed in the setup stage jira: STUDIO-10966 Change-Id: I3a887de800c62c5dd355c9dce554e2b5828a1c55 --- src/slic3r/GUI/WebGuideDialog.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 69be7eccd..41a6b88ac 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -869,12 +869,19 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle if (model_it.second.size() > 0) { variant = *model_it.second.begin(); if (model_it.second.size() > 1) { - const VendorProfile::PrinterModel &printer_model = *std::find_if(printer_profile.models.begin(), printer_profile.models.end(), - [id = model_it.first](auto &m) { return m.id == id; }); - for (auto &vt : printer_model.variants) { - if (std::find(model_it.second.begin(), model_it.second.end(), vt.name) != model_it.second.end()) { variant = vt.name; break; } + if (printer_profile.models.size() > 0) { + const VendorProfile::PrinterModel& printer_model = *std::find_if(printer_profile.models.begin(), printer_profile.models.end(), + [id = model_it.first](auto& m) { return m.id == id; }); + for (auto& vt : printer_model.variants) { + if (std::find(model_it.second.begin(), model_it.second.end(), vt.name) != model_it.second.end()) { variant = vt.name; break; } + } + } + else if (variant != PresetBundle::BBL_DEFAULT_PRINTER_VARIANT){ + if (std::find(model_it.second.begin(), model_it.second.end(), PresetBundle::BBL_DEFAULT_PRINTER_VARIANT) != model_it.second.end()) + variant = PresetBundle::BBL_DEFAULT_PRINTER_VARIANT; } } + const auto config_old = old_enabled_vendors.find(bundle_name); if (config_old == old_enabled_vendors.end()) return model_it.first;