diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-03-29 16:53:34 +0200 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-04-01 14:56:54 +0200 |
commit | 1c85e7ece4d832b114f91c1858ba2b24964d5d9e (patch) | |
tree | 20b320c320edfece730f977a8c9809f189224027 /libqpdf/QPDF_Array.cc | |
parent | 6295da436f77ef0e1016dafbb4172452db65ac0b (diff) | |
download | qpdf-1c85e7ece4d832b114f91c1858ba2b24964d5d9e.tar.zst |
Remove SparseOHArray::erase
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index 320a1ab7..fbaf776f 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -284,7 +284,20 @@ QPDF_Array::erase(int at) return false; } if (sparse) { - sp_elements.erase(at); + auto end = sp_elements.elements.end(); + if (auto iter = sp_elements.elements.lower_bound(at); iter != end) { + if (iter->first == at) { + iter++; + sp_elements.elements.erase(at); + } + + while (iter != end) { + auto nh = sp_elements.elements.extract(iter++); + --nh.key(); + sp_elements.elements.insert(std::move(nh)); + } + } + --sp_elements.n_elements; } else { elements.erase(elements.cbegin() + at); } |