diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 846cdb3881a..4aecc7fc6ab 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2235,6 +2235,14 @@ const std::string& ExtruderFilaments::get_preset_name_by_alias(const std::string return alias; } +void ExtruderFilaments::select_filament(size_t idx) +{ + assert(idx == size_t(-1) || idx < m_extr_filaments.size()); + // Check idx befor saving it's value to m_idx_selected. + // Invalidate m_idx_selected, if idx is out of range m_extr_filaments + m_idx_selected = (idx == size_t(-1) || idx < m_extr_filaments.size()) ? idx : size_t(-1); +} + bool ExtruderFilaments::select_filament(const std::string &name_w_suffix, bool force/*= false*/) { std::string name = Preset::remove_suffix_modified(name_w_suffix); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 533c6938128..589be92a281 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -906,7 +906,7 @@ class ExtruderFilaments // Select filament by the full filament name, which contains name of filament, separator and name of selected preset // If full_name doesn't contain name of selected preset, then select first preset in the list for this filament bool select_filament(const std::string& name, bool force = false); - void select_filament(size_t idx) { m_idx_selected = idx; } + void select_filament(size_t idx); std::string get_selected_preset_name() const { return m_idx_selected == size_t(-1) ? std::string() : m_extr_filaments[m_idx_selected].preset->name; } const Preset* get_selected_preset() const { return m_idx_selected == size_t(-1) ? nullptr : m_extr_filaments[m_idx_selected].preset; }