aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Array.cc
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-03-29 16:45:12 +0200
committerm-holger <m-holger@kubitscheck.org>2023-04-01 14:56:47 +0200
commit6295da436f77ef0e1016dafbb4172452db65ac0b (patch)
treeca39568f6571cd9f7e0d90590444dc701b9218ec /libqpdf/QPDF_Array.cc
parent73023bcb5d0705a8e914ae7586aa2f417a82d9a7 (diff)
downloadqpdf-6295da436f77ef0e1016dafbb4172452db65ac0b.tar.zst
Remove SparseOHArray::insert
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r--libqpdf/QPDF_Array.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc
index d7505468..320a1ab7 100644
--- a/libqpdf/QPDF_Array.cc
+++ b/libqpdf/QPDF_Array.cc
@@ -246,7 +246,19 @@ QPDF_Array::insert(int at, QPDFObjectHandle const& item)
} else {
checkOwnership(item);
if (sparse) {
- sp_elements.insert(at, item);
+ auto iter = sp_elements.elements.crbegin();
+ while (iter != sp_elements.elements.crend()) {
+ auto key = (iter++)->first;
+ if (key >= at) {
+ auto nh = sp_elements.elements.extract(key);
+ ++nh.key();
+ sp_elements.elements.insert(std::move(nh));
+ } else {
+ break;
+ }
+ }
+ sp_elements.elements[at] = item.getObj();
+ ++sp_elements.n_elements;
} else {
elements.insert(elements.cbegin() + at, item.getObj());
}