diff options
-rw-r--r-- | libqpdf/QPDF_Array.cc | 21 | ||||
-rw-r--r-- | libqpdf/SparseOHArray.cc | 13 | ||||
-rw-r--r-- | libqpdf/qpdf/SparseOHArray.hh | 1 |
3 files changed, 16 insertions, 19 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index 1f1ce55a..d5cef946 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -92,11 +92,22 @@ QPDF_Array::create(std::vector<std::shared_ptr<QPDFObject>> const& items) std::shared_ptr<QPDFObject> QPDF_Array::copy(bool shallow) { - if (sparse) { - return create(shallow ? sp_elements : sp_elements.copy()); - } else { - if (shallow) { + if (shallow) { + if (sparse) { + return create(sp_elements); + } else { return create(elements); + } + } else { + if (sparse) { + SparseOHArray result; + result.n_elements = sp_elements.n_elements; + for (auto const& element: sp_elements.elements) { + auto const& obj = element.second; + result.elements[element.first] = + obj->getObjGen().isIndirect() ? obj : obj->copy(); + } + return create(std::move(result)); } else { std::vector<std::shared_ptr<QPDFObject>> result; result.reserve(elements.size()); @@ -107,7 +118,7 @@ QPDF_Array::copy(bool shallow) : element->copy()) : element); } - return create(result); + return create(std::move(result)); } } } diff --git a/libqpdf/SparseOHArray.cc b/libqpdf/SparseOHArray.cc index c830d035..8b137891 100644 --- a/libqpdf/SparseOHArray.cc +++ b/libqpdf/SparseOHArray.cc @@ -1,14 +1 @@ -#include <qpdf/SparseOHArray.hh> -SparseOHArray -SparseOHArray::copy() -{ - SparseOHArray result; - result.n_elements = this->n_elements; - for (auto const& element: this->elements) { - auto value = element.second; - result.elements[element.first] = - value->getObjGen().isIndirect() ? value : value->copy(); - } - return result; -} diff --git a/libqpdf/qpdf/SparseOHArray.hh b/libqpdf/qpdf/SparseOHArray.hh index e7733472..5760f174 100644 --- a/libqpdf/qpdf/SparseOHArray.hh +++ b/libqpdf/qpdf/SparseOHArray.hh @@ -16,7 +16,6 @@ class SparseOHArray { return n_elements; } - SparseOHArray copy(); private: friend class QPDF_Array; |