From c5d1e2449c25bb9c9af8116b40c6b0f00d138f7b Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Fri, 7 Jan 2022 20:04:07 +0100 Subject: Fix of #7583: Wizard crashes due to accessing undefined AppConfig section. --- src/libslic3r/AppConfig.hpp | 2 +- src/slic3r/GUI/ConfigWizard.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index 418f3427b..cd0f1a5ae 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -100,7 +100,7 @@ public: bool has_section(const std::string §ion) const { return m_storage.find(section) != m_storage.end(); } const std::map& get_section(const std::string §ion) const - { return m_storage.find(section)->second; } + { auto it = m_storage.find(section); assert(it != m_storage.end()); return it->second; } void set_section(const std::string §ion, const std::map& data) { m_storage[section] = data; } void clear_section(const std::string §ion) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 66b27995f..dadf5d8ca 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2720,8 +2720,11 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese return false; } else { - bool is_filaments_changed = app_config->get_section(AppConfig::SECTION_FILAMENTS) != appconfig_new.get_section(AppConfig::SECTION_FILAMENTS); - bool is_sla_materials_changed = app_config->get_section(AppConfig::SECTION_MATERIALS) != appconfig_new.get_section(AppConfig::SECTION_MATERIALS); + auto changed = [app_config, &appconfig_new = std::as_const(this->appconfig_new)](const std::string& section_name) { + return (app_config->has_section(section_name) ? app_config->get_section(section_name) : std::map()) != appconfig_new.get_section(section_name); + }; + bool is_filaments_changed = changed(AppConfig::SECTION_FILAMENTS); + bool is_sla_materials_changed = changed(AppConfig::SECTION_MATERIALS); if ((check_unsaved_preset_changes = is_filaments_changed || is_sla_materials_changed)) { header = is_filaments_changed ? _L("Some filaments were uninstalled.") : _L("Some SLA materials were uninstalled."); if (!wxGetApp().check_and_keep_current_preset_changes(caption, header, act_btns, &apply_keeped_changes)) -- cgit v1.2.3