From aaa7ab6ca2b593a4f20a08292a6fb44339029474 Mon Sep 17 00:00:00 2001 From: Ryan Heule Date: Wed, 1 Jan 2025 16:36:04 -0600 Subject: [PATCH] Avoid null pointer dereference for partial configuration settings --- src/libslic3r/PrintConfig.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 907fdfb02a..efa9be9760 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -5130,7 +5130,14 @@ void DynamicPrintConfig::normalize_fdm() } } - if (this->has("wipe_tower_extruder")) { + // This method is called repeatedly while building configuration. We may + // not have enough info yet to determine whether the extruder is valid; + // wait until we do before checking. + // + // NOTE: other extruder validation (e.g. perimeter_extruder, infill_extruder) + // happens elsewhere, as those settings can be modified for specific print + // objects or sometimes even regions of objects. + if (this->has("wipe_tower_extruder") && this->has("nozzle_diameter")) { // If invalid, replace with 0. int extruder = this->opt("wipe_tower_extruder")->value; int num_extruders = this->opt("nozzle_diameter")->size();