Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Matena <lukasmatena@seznam.cz>2022-04-21 16:36:35 +0300
committerLukas Matena <lukasmatena@seznam.cz>2022-04-21 16:36:35 +0300
commit2202e2b93ab3949dbcf0402e8e7cf69264f6b47f (patch)
tree49c64f0559f7975372ecf2e7d641d9b26f59b8e7
parent11b1028565eb34056c640ea26166cfc8857f53d9 (diff)
Fixed a crash in lightning infill (invalidated iterator)lm_lightning_crash
-rw-r--r--src/libslic3r/Fill/Lightning/TreeNode.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libslic3r/Fill/Lightning/TreeNode.cpp b/src/libslic3r/Fill/Lightning/TreeNode.cpp
index b36a66dbb..d1820410e 100644
--- a/src/libslic3r/Fill/Lightning/TreeNode.cpp
+++ b/src/libslic3r/Fill/Lightning/TreeNode.cpp
@@ -375,8 +375,9 @@ void Node::convertToPolylines(size_t long_line_idx, Polygons& output) const
void Node::removeJunctionOverlap(Polygons& result_lines, const coord_t line_width) const
{
const coord_t reduction = line_width / 2; // TODO make configurable?
- for (auto poly_it = result_lines.begin(); poly_it != result_lines.end(); ) {
- Polygon &polyline = *poly_it;
+ size_t res_line_idx = 0;
+ while (res_line_idx < result_lines.size()) {
+ Polygon &polyline = result_lines[res_line_idx];
if (polyline.size() <= 1) {
polyline = std::move(result_lines.back());
result_lines.pop_back();
@@ -403,7 +404,7 @@ void Node::removeJunctionOverlap(Polygons& result_lines, const coord_t line_widt
polyline = std::move(result_lines.back());
result_lines.pop_back();
} else
- ++ poly_it;
+ ++ res_line_idx;
}
}