aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/NNTree.cc10
-rw-r--r--libqpdf/QPDFNameTreeObjectHelper.cc7
-rw-r--r--libqpdf/QPDFNumberTreeObjectHelper.cc7
3 files changed, 23 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;
}
diff --git a/libqpdf/QPDFNameTreeObjectHelper.cc b/libqpdf/QPDFNameTreeObjectHelper.cc
index ffcf95a3..c43281bd 100644
--- a/libqpdf/QPDFNameTreeObjectHelper.cc
+++ b/libqpdf/QPDFNameTreeObjectHelper.cc
@@ -102,6 +102,13 @@ QPDFNameTreeObjectHelper::iterator::operator==(iterator const& other) const
return *(impl) == *(other.impl);
}
+void
+QPDFNameTreeObjectHelper::iterator::insertAfter(
+ std::string const& key, QPDFObjectHandle value)
+{
+ impl->insertAfter(QPDFObjectHandle::newUnicodeString(key), value);
+}
+
QPDFNameTreeObjectHelper::iterator
QPDFNameTreeObjectHelper::begin() const
{
diff --git a/libqpdf/QPDFNumberTreeObjectHelper.cc b/libqpdf/QPDFNumberTreeObjectHelper.cc
index 053fa421..ceda9482 100644
--- a/libqpdf/QPDFNumberTreeObjectHelper.cc
+++ b/libqpdf/QPDFNumberTreeObjectHelper.cc
@@ -98,6 +98,13 @@ QPDFNumberTreeObjectHelper::iterator::operator==(iterator const& other) const
return *(impl) == *(other.impl);
}
+void
+QPDFNumberTreeObjectHelper::iterator::insertAfter(
+ numtree_number key, QPDFObjectHandle value)
+{
+ impl->insertAfter(QPDFObjectHandle::newInteger(key), value);
+}
+
QPDFNumberTreeObjectHelper::iterator
QPDFNumberTreeObjectHelper::begin() const
{