From a5b8f4608fd2e88c5f4a0869b7d1305cf31c1c84 Mon Sep 17 00:00:00 2001 From: Rodrigo Faselli <162915171+RF47@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:22:47 -0300 Subject: [PATCH] Flatpak Crash Fix when Fuzzy skin (#12611) Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com> --- src/libslic3r/Algorithm/LineSplit.cpp | 5 +++-- src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/Algorithm/LineSplit.cpp b/src/libslic3r/Algorithm/LineSplit.cpp index d2e2ff53fd..9e359b76ea 100644 --- a/src/libslic3r/Algorithm/LineSplit.cpp +++ b/src/libslic3r/Algorithm/LineSplit.cpp @@ -257,8 +257,9 @@ SplittedLine do_split_line(const ClipperZUtils::ZPath& path, const ExPolygons& c idx++; } else { if (!is_src(node.front()->front())) { - const auto& last = result.back(); - if (result.empty() || last.get_src_index() != to_src_idx(p)) { + if (result.empty() || result.back().get_src_index() != to_src_idx(p)) { + //const auto& last = result.back(); + //if (result.empty() || last.get_src_index() != to_src_idx(p)) { result.emplace_back(to_point(p), false, idx); } } diff --git a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp index 6f878fd79f..018eefb4fd 100644 --- a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp +++ b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp @@ -406,12 +406,12 @@ void apply_fuzzy_skin(Arachne::ExtrusionLine* extrusion, const PerimeterGenerato fuzzy_extrusion_line(segment, slice_z, r.first, false); // Orca: only add non fuzzy point if it's not in the extrusion closing point. - if (extrusion->junctions.front().p != front.p) { + if (!extrusion->junctions.empty() && extrusion->junctions.front().p != front.p) { extrusion->junctions.push_back(front); } extrusion->junctions.insert(extrusion->junctions.end(), segment.begin(), segment.end()); // Orca: only add non fuzzy point if it's not in the extrusion closing point. - if (extrusion->junctions.back().p != front.p) { + if (!extrusion->junctions.empty() && extrusion->junctions.back().p != front.p) { extrusion->junctions.push_back(back); } segment.clear(); @@ -442,7 +442,7 @@ void apply_fuzzy_skin(Arachne::ExtrusionLine* extrusion, const PerimeterGenerato } //Orca: ensure the loop is closed after fuzzy - if (extrusion->junctions.front().p != extrusion->junctions.back().p) { + if (!extrusion->junctions.empty() && extrusion->junctions.front().p != extrusion->junctions.back().p) { extrusion->junctions.back().p = extrusion->junctions.front().p; extrusion->junctions.back().w = extrusion->junctions.front().w; }