Handle case where the get_region() call fails.

This commit is contained in:
Joseph Lenox 2018-07-25 23:14:35 -05:00
parent 347143e344
commit 725f8282b3

View File

@ -514,9 +514,13 @@ PrintGCode::process_layer(size_t idx, const Layer* layer, const Points& copies)
const auto n_slices {layer->slices.size()}; const auto n_slices {layer->slices.size()};
for (auto region_id = 0U; region_id < print.regions.size(); ++region_id) { 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 LayerRegion* layerm;
auto* region = print.get_region(region_id); try {
layerm = const_cast<LayerRegion*>(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 // process perimeters
{ {
auto extruder_id = region->config.perimeter_extruder-1; auto extruder_id = region->config.perimeter_extruder-1;