From e42aabebb16253b0172fb80a58f58953aec8dda7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 3 Sep 2024 17:25:36 +0800 Subject: [PATCH] FIX: chain_and_reorder_extrusion_entities crashes this function crashes if there are empty elements in entities. jira: STUDIO-7975 Change-Id: I0dbeb6b1151dd089be7617ebc3271691f64ac61e (cherry picked from commit df30728617a89891c68e36cce771fb6380355b82) --- src/libslic3r/ShortestPath.cpp | 3 +++ src/libslic3r/Support/TreeSupport.cpp | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/ShortestPath.cpp b/src/libslic3r/ShortestPath.cpp index 56b1234c1..058802229 100644 --- a/src/libslic3r/ShortestPath.cpp +++ b/src/libslic3r/ShortestPath.cpp @@ -1030,6 +1030,9 @@ void reorder_extrusion_entities(std::vector &entities, const s void chain_and_reorder_extrusion_entities(std::vector &entities, const Point *start_near) { + // this function crashes if there are empty elements in entities + entities.erase(std::remove_if(entities.begin(), entities.end(), [](ExtrusionEntity *entity) { return static_cast(entity)->empty(); }), + entities.end()); reorder_extrusion_entities(entities, chain_extrusion_entities(entities, start_near)); } diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 65f379a9f..d4e4c9899 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1616,9 +1616,6 @@ void TreeSupport::generate_toolpaths() // sort extrusions to reduce travel, also make sure walls go before infills if (ts_layer->support_fills.no_sort == false) { - // chain_and_reorder_extrusion_entities crashes if there are empty elements in entities - auto &entities = ts_layer->support_fills.entities; - entities.erase(std::remove_if(entities.begin(), entities.end(), [](ExtrusionEntity* entity) { return static_cast(entity)->empty(); }), entities.end()); chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities); } }