Commit e78c1201b587649d7a35241d5d4abeb927c4455c

Authored by m-holger
1 parent 7bbd8b30

Refactor `NNTreeIterator::increment`: simplify loop logic, replace `getArrayNIte…

…ms` and `getArrayItem` with `size` and subscript operators, remove redundant debug traces, and improve readability.
libqpdf/NNTree.cc
... ... @@ -121,21 +121,20 @@ void
121 121 NNTreeIterator::increment(bool backward)
122 122 {
123 123 if (item_number < 0) {
124   - QTC::TC("qpdf", "NNTree increment end()");
125 124 deepen(impl.oh, !backward, true);
126 125 return;
127 126 }
128   - bool found_valid_key = false;
129   - while (valid() && !found_valid_key) {
  127 +
  128 + while (valid()) {
130 129 item_number += backward ? -2 : 2;
131 130 auto items = node.getKey(impl.details.itemsKey());
132   - if (item_number < 0 || item_number >= items.getArrayNItems()) {
  131 + if (item_number < 0 || std::cmp_greater_equal(item_number, items.size())) {
133 132 bool found = false;
134 133 setItemNumber(QPDFObjectHandle(), -1);
135 134 while (!(found || path.empty())) {
136 135 auto& element = path.back();
137 136 auto pe_node = getNextKid(element, backward);
138   - if (pe_node.isNull()) {
  137 + if (pe_node.null()) {
139 138 path.pop_back();
140 139 } else {
141 140 found = deepen(pe_node, !backward, false);
... ... @@ -144,14 +143,12 @@ NNTreeIterator::increment(bool backward)
144 143 }
145 144 if (item_number >= 0) {
146 145 items = node.getKey(impl.details.itemsKey());
147   - if (item_number + 1 >= items.getArrayNItems()) {
148   - QTC::TC("qpdf", "NNTree skip item at end of short items");
  146 + if (std::cmp_greater_equal(item_number + 1, items.size())) {
149 147 impl.warn(node, "items array doesn't have enough elements");
150   - } else if (!impl.details.keyValid(items.getArrayItem(item_number))) {
151   - QTC::TC("qpdf", "NNTree skip invalid key");
  148 + } else if (!impl.details.keyValid(items[item_number])) {
152 149 impl.warn(node, ("item " + std::to_string(item_number) + " has the wrong type"));
153 150 } else {
154   - found_valid_key = true;
  151 + return;
155 152 }
156 153 }
157 154 }
... ...
qpdf/qpdf.testcov
... ... @@ -520,10 +520,7 @@ qpdf-c called qpdf_oh_unparse_binary 0
520 520 QPDFWriter getFilterOnWrite false 0
521 521 QPDFPageObjectHelper::forEachXObject 3
522 522 NNTree skip invalid kid 0
523   -NNTree skip item at end of short items 0
524   -NNTree skip invalid key 0
525 523 NNTree repair 0
526   -NNTree increment end() 0
527 524 NNTree insertAfter inserts first 0
528 525 NNTree erased last kid/item in tree 1
529 526 QPDFPageObjectHelper unresolved names 0
... ...