From 3808f95a26d086b83bfc3aa765dabd3d3fb52b7b Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Sat, 27 Jun 2026 23:07:44 +0800 Subject: [PATCH] fix: update .info base_id if it is mismatched or empty (#14430) * fix: update .info base_id if it is mismatched or empty * Merge branch 'main' into fix/update-base-id-on-mismatch-or-missing * early return --- src/libslic3r/Preset.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 6295da51a73..cc429a026d8 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -3042,6 +3042,25 @@ void PresetCollection::check_and_fix_syncinfo(Preset& preset, const std::string& preset.updated_time = 0; preset.sync_info = "create"; preset.save_info(); + return; + } + + const auto inherits = Preset::inherits(preset.config); + Preset* parent = find_preset2(inherits, true); + if (!inherits.empty() && parent) { + const std::string expected = parent->setting_id; + if (expected.empty()) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": Direct parent of " << preset.name << " does not have a setting_id"; + return; + } + // Reconcile a missing or stale base_id against the direct parent's setting_id. + if (preset.base_id != expected) { + preset.base_id = expected; + // Already-synced preset whose base changed -> re-push it. + if (!preset.setting_id.empty() && preset.sync_info.empty()) + preset.sync_info = "update"; + preset.save_info(); + } } }