From 9c6a3b10547703669f6fdd58dc4500eea4bf32ce Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Fri, 5 Jun 2026 14:27:20 +0300 Subject: [PATCH] Fix crash when deleting filaments after a profile switch (#14055) --- src/slic3r/GUI/PartPlate.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 3b4549e969..e6a4b5d608 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -3762,7 +3762,11 @@ void PartPlate::on_filament_deleted(int filament_count, int filament_id) { if (m_config.has("filament_map")) { std::vector& filament_maps = m_config.option("filament_map")->values; - filament_maps.erase(filament_maps.begin() + filament_id); + // Guard against an out-of-range index: the per-plate filament_map can be out of sync + // with the global filament count, and erasing at/past end() triggers an out-of-bounds + // memmove (crash on macOS, see PartPlate::on_filament_deleted in crash reports). + if (filament_id >= 0 && filament_id < (int) filament_maps.size()) + filament_maps.erase(filament_maps.begin() + filament_id); } update_first_layer_print_sequence_when_delete_filament(filament_id); }