From de1dfd06111ac50604fb23302d0f07e9df8ad26a Mon Sep 17 00:00:00 2001 From: ExPikaPaka Date: Wed, 30 Sep 2026 08:49:34 +0200 Subject: [PATCH] Hand the island's walls over instead of copying them append(const ExtrusionEntity &) clones; the collection each island produced was deep-copied into the layer's loops and then thrown away. The no-overlap areas are moved as well. --- src/libslic3r/PerimeterGenerator.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index a5bf29fcb4..4bf320df73 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -2908,10 +2908,11 @@ void PerimeterGenerator::process_arachne() }); for (ArachneSurfaceResult &result : results) { if (result.has_loops) - this->loops->append(result.loops); + // Moved, not copied: append(const ExtrusionEntity &) clones the whole wall tree of the island. + this->loops->append(std::move(result.loops)); this->fill_surfaces->append(result.infill, stInternal); apply_extra_perimeters(result.infill); - this->fill_no_overlap->insert(this->fill_no_overlap->end(), result.no_overlap.begin(), result.no_overlap.end()); + append(*this->fill_no_overlap, std::move(result.no_overlap)); } }