aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Array.cc
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-03-29 16:53:34 +0200
committerm-holger <m-holger@kubitscheck.org>2023-04-01 14:56:54 +0200
commit1c85e7ece4d832b114f91c1858ba2b24964d5d9e (patch)
tree20b320c320edfece730f977a8c9809f189224027 /libqpdf/QPDF_Array.cc
parent6295da436f77ef0e1016dafbb4172452db65ac0b (diff)
downloadqpdf-1c85e7ece4d832b114f91c1858ba2b24964d5d9e.tar.zst
Remove SparseOHArray::erase
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r--libqpdf/QPDF_Array.cc15
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);
}