aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-03-25 18:23:19 +0100
committerm-holger <m-holger@kubitscheck.org>2023-03-29 14:06:26 +0200
commit0db65e79120e66069a37906845a984457b711b6f (patch)
tree16f3aef82d28ff1c464ca2d0b3e39b90382b7b6c
parent1367226002d48bc0d67c08cae498fd92dad41977 (diff)
downloadqpdf-0db65e79120e66069a37906845a984457b711b6f.tar.zst
Remove temporary OHArray::disconnect and setAt
-rw-r--r--include/qpdf/QPDFObjectHandle.hh4
-rw-r--r--libqpdf/OHArray.cc20
-rw-r--r--libqpdf/QPDF_Array.cc12
-rw-r--r--libqpdf/qpdf/OHArray.hh2
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
@@ -12,26 +12,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)
{
if (idx >= elements.size()) {
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;