diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 15 | ||||
-rw-r--r-- | libqpdf/SparseOHArray.cc | 19 | ||||
-rw-r--r-- | libqpdf/qpdf/SparseOHArray.hh | 1 |
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(); |