From 8e64f2cd2d2199e002f530d9955a404b99549047 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 6 Nov 2024 12:54:14 +0100 Subject: [PATCH] Import: Fix index error with legacy STEP export Fixes #17677 --- src/Mod/Import/App/ExportOCAF.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/Mod/Import/App/ExportOCAF.cpp b/src/Mod/Import/App/ExportOCAF.cpp index 6b73a08ff2..8daa0cd823 100644 --- a/src/Mod/Import/App/ExportOCAF.cpp +++ b/src/Mod/Import/App/ExportOCAF.cpp @@ -446,14 +446,28 @@ void ExportOCAF::pushNode(int root_id, std::vector& hierarchical_label, std::vector& hierarchical_loc) { - TDF_Label root; - TDF_Label node; - root = hierarchical_label.at(root_id - 1); - node = hierarchical_label.at(node_id - 1); + auto isValidIndex = [&](std::size_t root, std::size_t node) { + // NOLINTBEGIN + if (root >= hierarchical_label.size()) { + return false; + } + if (node >= hierarchical_label.size() || node >= hierarchical_loc.size()) { + return false; + } - XCAFDoc_DocumentTool::ShapeTool(root)->AddComponent(root, - node, - hierarchical_loc.at(node_id - 1)); + return true; + // NOLINTEND + }; + if (isValidIndex(root_id - 1, node_id - 1)) { + TDF_Label root; + TDF_Label node; + TopLoc_Location locn; + root = hierarchical_label.at(root_id - 1); + node = hierarchical_label.at(node_id - 1); + locn = hierarchical_loc.at(node_id - 1); + + XCAFDoc_DocumentTool::ShapeTool(root)->AddComponent(root, node, locn); + } } // ----------------------------------------------------------------------------