From 13d55d88cd62e416433c2402f1ba4061d67dcd28 Mon Sep 17 00:00:00 2001 From: m-holger Date: Sun, 17 Aug 2025 14:22:03 +0100 Subject: [PATCH] Refactor `NNTreeIterator::getNextKid`: simplify loop logic, replace `getArrayNItems` and `getArrayItem` with `size` and subscript operators, and improve code readability. --- libqpdf/NNTree.cc | 18 ++++++------------ qpdf/qpdf.testcov | 1 - 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/libqpdf/NNTree.cc b/libqpdf/NNTree.cc index 0a7d9d5..1eea3bd 100644 --- a/libqpdf/NNTree.cc +++ b/libqpdf/NNTree.cc @@ -87,28 +87,22 @@ NNTreeIterator::PathElement::PathElement(QPDFObjectHandle const& node, int kid_n QPDFObjectHandle NNTreeIterator::getNextKid(PathElement& pe, bool backward) { - QPDFObjectHandle result; - bool found = false; - while (!found) { + while (true) { pe.kid_number += backward ? -1 : 1; auto kids = pe.node.getKey("/Kids"); - if ((pe.kid_number >= 0) && (pe.kid_number < kids.getArrayNItems())) { - result = kids.getArrayItem(pe.kid_number); + if (pe.kid_number >= 0 && std::cmp_less(pe.kid_number, kids.size())) { + auto result = kids[pe.kid_number]; if (result.isDictionary() && (result.hasKey("/Kids") || result.hasKey(impl.details.itemsKey()))) { - found = true; + return result; } else { - QTC::TC("qpdf", "NNTree skip invalid kid"); impl.warn( - pe.node, - ("skipping over invalid kid at index " + std::to_string(pe.kid_number))); + pe.node, "skipping over invalid kid at index " + std::to_string(pe.kid_number)); } } else { - result = QPDFObjectHandle::newNull(); - found = true; + return QPDFObjectHandle::newNull(); } } - return result; } bool diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index 79ef31b..4208e13 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -519,7 +519,6 @@ qpdf-c called qpdf_oh_unparse_resolved 0 qpdf-c called qpdf_oh_unparse_binary 0 QPDFWriter getFilterOnWrite false 0 QPDFPageObjectHelper::forEachXObject 3 -NNTree skip invalid kid 0 NNTree repair 0 NNTree insertAfter inserts first 0 NNTree erased last kid/item in tree 1 -- libgit2 0.21.4