From f2836d47382fbc24a624ace592c9d6b6c5168e27 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 29 Oct 2018 13:29:10 +0100 Subject: Fix of issue 1368 (vector index out of bounds in the wipe tower generator) --- xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'xs/src/libslic3r') diff --git a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp index 61d8df035..3ef141829 100644 --- a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp +++ b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp @@ -643,7 +643,8 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo "\n\n"); // Ask our writer about how much material was consumed: - m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); + if (m_current_tool < m_used_filament_length.size()) + m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); ToolChangeResult result; result.priming = false; @@ -1068,8 +1069,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer() m_depth_traversed = m_wipe_tower_depth-m_perimeter_width; - // Ask our writer about how much material was consumed: - m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); + // Ask our writer about how much material was consumed. + if (m_current_tool < m_used_filament_length.size()) + m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); ToolChangeResult result; result.priming = false; @@ -1166,7 +1168,6 @@ void WipeTowerPrusaMM::save_on_last_wipe() } } - // Processes vector m_plan and calls respective functions to generate G-code for the wipe tower // Resulting ToolChangeResults are appended into vector "result" void WipeTowerPrusaMM::generate(std::vector> &result) @@ -1256,6 +1257,4 @@ void WipeTowerPrusaMM::make_wipe_tower_square() lay.extra_spacing = lay.depth / lay.toolchanges_depth(); } - - }; // namespace Slic3r -- cgit v1.2.3