From 2ccc72f16eab50ea9c354c4214999c702bb9ba08 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Wed, 19 Mar 2025 14:54:20 +0800 Subject: [PATCH] FIX: config: add some error process logic when loading 3mf jira: STUDIO-7956 Change-Id: I13084cfe5233da9e928dc8eb10d8ffe1bc38080c --- src/libslic3r/PresetBundle.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index f65ca27bf..3069d411b 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -2781,7 +2781,10 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool 1; #else // BBS: use filament_colour insteadof filament_settings_id, filament_settings_id sometimes is not generated - size_t num_filaments = config.option("filament_colour")->size(); + ConfigOptionStrings* filament_colour_option = config.option("filament_colour"); + size_t num_filaments = filament_colour_option?filament_colour_option->size():0; + if (num_filaments == 0) + throw Slic3r::RuntimeError(std::string("Invalid configuration file: ") + name_or_path); #endif //BBS: add config related logs @@ -2836,7 +2839,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool || (extruder_variant_count < num_filaments)) { assert(false); BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(": invalid config file %1%, can not find suitable filament_extruder_variant or filament_self_index") % name_or_path; - throw Slic3r::RuntimeError(std::string("invalid configuration file: ") + name_or_path); + throw Slic3r::RuntimeError(std::string("Invalid configuration file: ") + name_or_path); } if (num_filaments != extruder_variant_count) { process_multi_extruder = true;