From c8aa1de66f8d99c1f26a7430a5f2407d2c18c045 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Mon, 17 Mar 2025 10:27:01 +0800 Subject: [PATCH] FIX: crash when tool_change is empty jira: none Change-Id: Ia2d6fda6847e41054700e37a25179ae2a8d5cd46 (cherry picked from commit c38eb761c6ec5bf8013ba9f4b02ccb09985b4181) --- src/libslic3r/GCode/WipeTower.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 30746cb4bc..7b41cae98a 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -3956,9 +3956,10 @@ void WipeTower::generate_new(std::vectorblock_id == block.block_id && finish_layer_filament == -1) { - finish_layer_filament = layer.tool_changes.front().old_tool; + if (!layer.tool_changes.empty()) { + WipeTowerBlock * last_layer_finish_block = get_block_by_category(get_filament_category(layer.tool_changes.front().old_tool), false); + if (last_layer_finish_block && last_layer_finish_block->block_id == block.block_id && finish_layer_filament == -1) + finish_layer_filament = layer.tool_changes.front().old_tool; } if (finish_layer_filament == -1) {