From 0db65e79120e66069a37906845a984457b711b6f Mon Sep 17 00:00:00 2001 From: m-holger Date: Sat, 25 Mar 2023 17:23:19 +0000 Subject: [PATCH] Remove temporary OHArray::disconnect and setAt --- include/qpdf/QPDFObjectHandle.hh | 4 ++-- libqpdf/OHArray.cc | 20 -------------------- libqpdf/QPDF_Array.cc | 12 ++++++++++-- libqpdf/qpdf/OHArray.hh | 2 -- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index 5166e198..ecb50ba0 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -1494,14 +1494,14 @@ class QPDFObjectHandle // disconnected(). class DisconnectAccess { + friend class QPDF_Array; friend class QPDF_Dictionary; friend class QPDF_Stream; friend class SparseOHArray; - friend class OHArray; private: static void - disconnect(QPDFObjectHandle& o) + disconnect(QPDFObjectHandle o) { o.disconnect(); } diff --git a/libqpdf/OHArray.cc b/libqpdf/OHArray.cc index dc01421f..ce6a595e 100644 --- a/libqpdf/OHArray.cc +++ b/libqpdf/OHArray.cc @@ -11,26 +11,6 @@ OHArray::OHArray() { } -void -OHArray::disconnect() -{ - for (auto const& iter: elements) { - if (iter) { - QPDFObjectHandle oh = iter; - QPDFObjectHandle::DisconnectAccess::disconnect(oh); - } - } -} - -void -OHArray::setAt(size_t idx, QPDFObjectHandle oh) -{ - if (idx >= elements.size()) { - throw std::logic_error("bounds error setting item in OHArray"); - } - elements[idx] = oh.getObj(); -} - void OHArray::erase(size_t idx) { diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index b86c3f0a..ce08332a 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -77,7 +77,11 @@ QPDF_Array::disconnect() if (sparse) { sp_elements.disconnect(); } else { - elements.disconnect(); + for (auto const& iter: elements.elements) { + if (iter) { + QPDFObjectHandle::DisconnectAccess::disconnect(iter); + } + } } } @@ -176,7 +180,11 @@ QPDF_Array::setItem(int n, QPDFObjectHandle const& oh) if (sparse) { sp_elements.setAt(QIntC::to_size(n), oh); } else { - elements.setAt(QIntC::to_size(n), oh); + size_t idx = size_t(n); + if (n < 0 || idx >= elements.elements.size()) { + throw std::logic_error("bounds error setting item in QPDF_Array"); + } + elements.elements[idx] = oh.getObj(); } } diff --git a/libqpdf/qpdf/OHArray.hh b/libqpdf/qpdf/OHArray.hh index e8abc8b3..e4d880db 100644 --- a/libqpdf/qpdf/OHArray.hh +++ b/libqpdf/qpdf/OHArray.hh @@ -12,11 +12,9 @@ class OHArray { public: OHArray(); - void setAt(size_t idx, QPDFObjectHandle oh); void erase(size_t idx); void insert(size_t idx, QPDFObjectHandle oh); OHArray copy(); - void disconnect(); private: friend class QPDF_Array;