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)
This commit is contained in:
Arthur 2024-09-03 17:25:36 +08:00 committed by Lane.Wei
parent 04756bf447
commit e42aabebb1
2 changed files with 3 additions and 3 deletions

View File

@ -1030,6 +1030,9 @@ void reorder_extrusion_entities(std::vector<ExtrusionEntity*> &entities, const s
void chain_and_reorder_extrusion_entities(std::vector<ExtrusionEntity*> &entities, const Point *start_near) void chain_and_reorder_extrusion_entities(std::vector<ExtrusionEntity*> &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<ExtrusionEntityCollection *>(entity)->empty(); }),
entities.end());
reorder_extrusion_entities(entities, chain_extrusion_entities(entities, start_near)); reorder_extrusion_entities(entities, chain_extrusion_entities(entities, start_near));
} }

View File

@ -1616,9 +1616,6 @@ void TreeSupport::generate_toolpaths()
// sort extrusions to reduce travel, also make sure walls go before infills // sort extrusions to reduce travel, also make sure walls go before infills
if (ts_layer->support_fills.no_sort == false) { 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<ExtrusionEntityCollection*>(entity)->empty(); }), entities.end());
chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities); chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities);
} }
} }