aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/NNTree.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-01-24 10:16:48 +0100
committerJay Berkenbilt <ejb@ql.org>2021-01-25 21:39:10 +0100
commit5816fb44b8ce24e8bb58cb30792e1c763d6cb163 (patch)
treea213191f94c80095f3f6f8261883ccd8ff95cfb9 /libqpdf/NNTree.cc
parent16a9bb3f6f63497946d0efbf403df92d0ce30745 (diff)
downloadqpdf-5816fb44b8ce24e8bb58cb30792e1c763d6cb163.tar.zst
name/number trees: insertAfter
Diffstat (limited to 'libqpdf/NNTree.cc')
-rw-r--r--libqpdf/NNTree.cc10
1 files changed, 9 insertions, 1 deletions
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;
}