From 725f8282b39d5d742279146f7fee1622dc562d91 Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Wed, 25 Jul 2018 23:14:35 -0500 Subject: [PATCH] Handle case where the get_region() call fails. --- xs/src/libslic3r/PrintGCode.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/xs/src/libslic3r/PrintGCode.cpp b/xs/src/libslic3r/PrintGCode.cpp index fee197287..a5efe937b 100644 --- a/xs/src/libslic3r/PrintGCode.cpp +++ b/xs/src/libslic3r/PrintGCode.cpp @@ -514,9 +514,13 @@ PrintGCode::process_layer(size_t idx, const Layer* layer, const Points& copies) const auto n_slices {layer->slices.size()}; for (auto region_id = 0U; region_id < print.regions.size(); ++region_id) { - auto* layerm = layer->get_region(region_id); //or next; TODO: handle error case - auto* region = print.get_region(region_id); - + LayerRegion* layerm; + try { + layerm = const_cast(layer->get_region(region_id)); + } catch (std::out_of_range &e) { + continue; // if no regions, bail; + } + auto* region {print.get_region(region_id)}; // process perimeters { auto extruder_id = region->config.perimeter_extruder-1;