From 5816fb44b8ce24e8bb58cb30792e1c763d6cb163 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 24 Jan 2021 04:16:48 -0500 Subject: name/number trees: insertAfter --- libqpdf/NNTree.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'libqpdf/NNTree.cc') diff --git a/libqpdf/NNTree.cc b/libqpdf/NNTree.cc index 05398602..02237939 100644 --- a/libqpdf/NNTree.cc +++ b/libqpdf/NNTree.cc @@ -444,6 +444,14 @@ NNTreeIterator::lastPathElement() void NNTreeIterator::insertAfter(QPDFObjectHandle key, QPDFObjectHandle value) { + if (! valid()) + { + QTC::TC("qpdf", "NNTree insertAfter inserts first"); + impl.insertFirst(key, value); + deepen(impl.oh, true, false); + return; + } + auto items = this->node.getKey(impl.details.itemsKey()); if (! items.isArray()) { @@ -457,6 +465,7 @@ NNTreeIterator::insertAfter(QPDFObjectHandle key, QPDFObjectHandle value) items.insertItem(this->item_number + 3, value); resetLimits(this->node, lastPathElement()); split(this->node, lastPathElement()); + increment(false); } NNTreeIterator& @@ -968,7 +977,6 @@ NNTreeImpl::insert(QPDFObjectHandle key, QPDFObjectHandle value) { QTC::TC("qpdf", "NNTree insert inserts after"); iter.insertAfter(key, value); - ++iter; } return iter; } -- cgit v1.2.3-54-g00ecf