From a31a9d541eca1b2acd67ac21732613e040548fbc Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Wed, 6 Nov 2024 11:33:48 +0800 Subject: [PATCH] FIX:array bound in delete_wipe_tower jira: STUDIO-8638 Change-Id: Ic7b4c3a6325501483ecd9f18925504752b7ad32d --- src/slic3r/GUI/GCodeViewer.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index e06726961..90ab44d05 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -3270,13 +3270,15 @@ void GUI::GCodeViewer::set_shells_on_preview(bool is_previewing) { void GUI::GCodeViewer::delete_wipe_tower() { size_t current_volumes_count = m_shells.volumes.volumes.size(); - for (size_t i = current_volumes_count - 1; i > 0; i--) { - GLVolume *v = m_shells.volumes.volumes[i]; - if (v->is_wipe_tower) { - m_shells.volumes.release_volume(v); - delete v; - m_shells.volumes.volumes.erase(m_shells.volumes.volumes.begin() + i); - break; + if (current_volumes_count >= 1) { + for (size_t i = current_volumes_count - 1; i > 0; i--) { + GLVolume *v = m_shells.volumes.volumes[i]; + if (v->is_wipe_tower) { + m_shells.volumes.release_volume(v); + delete v; + m_shells.volumes.volumes.erase(m_shells.volumes.volumes.begin() + i); + break; + } } } }