From 1c85e7ece4d832b114f91c1858ba2b24964d5d9e Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 29 Mar 2023 15:53:34 +0100 Subject: Remove SparseOHArray::erase --- libqpdf/QPDF_Array.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'libqpdf/QPDF_Array.cc') 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); } -- cgit v1.2.3-70-g09d2