diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-03-29 16:45:12 +0200 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-04-01 14:56:47 +0200 |
commit | 6295da436f77ef0e1016dafbb4172452db65ac0b (patch) | |
tree | ca39568f6571cd9f7e0d90590444dc701b9218ec /libqpdf/QPDF_Array.cc | |
parent | 73023bcb5d0705a8e914ae7586aa2f417a82d9a7 (diff) | |
download | qpdf-6295da436f77ef0e1016dafbb4172452db65ac0b.tar.zst |
Remove SparseOHArray::insert
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 14 |
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()); } |