summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libqpdf/QPDF_Array.cc15
-rw-r--r--libqpdf/SparseOHArray.cc19
-rw-r--r--libqpdf/qpdf/SparseOHArray.hh1
3 files changed, 14 insertions, 21 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);
}
diff --git a/libqpdf/SparseOHArray.cc b/libqpdf/SparseOHArray.cc
index 390f942a..e0c2d41d 100644
--- a/libqpdf/SparseOHArray.cc
+++ b/libqpdf/SparseOHArray.cc
@@ -30,25 +30,6 @@ SparseOHArray::disconnect()
}
}
-void
-SparseOHArray::erase(int at)
-{
- auto end = elements.end();
- if (auto iter = elements.lower_bound(at); iter != end) {
- if (iter->first == at) {
- iter++;
- elements.erase(at);
- }
-
- while (iter != end) {
- auto nh = elements.extract(iter++);
- --nh.key();
- elements.insert(std::move(nh));
- }
- }
- --n_elements;
-}
-
SparseOHArray
SparseOHArray::copy()
{
diff --git a/libqpdf/qpdf/SparseOHArray.hh b/libqpdf/qpdf/SparseOHArray.hh
index 8adffb30..f1a1011e 100644
--- a/libqpdf/qpdf/SparseOHArray.hh
+++ b/libqpdf/qpdf/SparseOHArray.hh
@@ -33,7 +33,6 @@ class SparseOHArray
{
elements[idx] = oh.getObj();
}
- void erase(int idx);
SparseOHArray copy();
void disconnect();