Commit 0db65e79120e66069a37906845a984457b711b6f

Authored by m-holger
1 parent 13672260

Remove temporary OHArray::disconnect and setAt

include/qpdf/QPDFObjectHandle.hh
@@ -1494,14 +1494,14 @@ class QPDFObjectHandle @@ -1494,14 +1494,14 @@ class QPDFObjectHandle
1494 // disconnected(). 1494 // disconnected().
1495 class DisconnectAccess 1495 class DisconnectAccess
1496 { 1496 {
  1497 + friend class QPDF_Array;
1497 friend class QPDF_Dictionary; 1498 friend class QPDF_Dictionary;
1498 friend class QPDF_Stream; 1499 friend class QPDF_Stream;
1499 friend class SparseOHArray; 1500 friend class SparseOHArray;
1500 - friend class OHArray;  
1501 1501
1502 private: 1502 private:
1503 static void 1503 static void
1504 - disconnect(QPDFObjectHandle& o) 1504 + disconnect(QPDFObjectHandle o)
1505 { 1505 {
1506 o.disconnect(); 1506 o.disconnect();
1507 } 1507 }
libqpdf/OHArray.cc
@@ -12,26 +12,6 @@ OHArray::OHArray() @@ -12,26 +12,6 @@ OHArray::OHArray()
12 } 12 }
13 13
14 void 14 void
15 -OHArray::disconnect()  
16 -{  
17 - for (auto const& iter: elements) {  
18 - if (iter) {  
19 - QPDFObjectHandle oh = iter;  
20 - QPDFObjectHandle::DisconnectAccess::disconnect(oh);  
21 - }  
22 - }  
23 -}  
24 -  
25 -void  
26 -OHArray::setAt(size_t idx, QPDFObjectHandle oh)  
27 -{  
28 - if (idx >= elements.size()) {  
29 - throw std::logic_error("bounds error setting item in OHArray");  
30 - }  
31 - elements[idx] = oh.getObj();  
32 -}  
33 -  
34 -void  
35 OHArray::erase(size_t idx) 15 OHArray::erase(size_t idx)
36 { 16 {
37 if (idx >= elements.size()) { 17 if (idx >= elements.size()) {
libqpdf/QPDF_Array.cc
@@ -77,7 +77,11 @@ QPDF_Array::disconnect() @@ -77,7 +77,11 @@ QPDF_Array::disconnect()
77 if (sparse) { 77 if (sparse) {
78 sp_elements.disconnect(); 78 sp_elements.disconnect();
79 } else { 79 } else {
80 - elements.disconnect(); 80 + for (auto const& iter: elements.elements) {
  81 + if (iter) {
  82 + QPDFObjectHandle::DisconnectAccess::disconnect(iter);
  83 + }
  84 + }
81 } 85 }
82 } 86 }
83 87
@@ -176,7 +180,11 @@ QPDF_Array::setItem(int n, QPDFObjectHandle const& oh) @@ -176,7 +180,11 @@ QPDF_Array::setItem(int n, QPDFObjectHandle const& oh)
176 if (sparse) { 180 if (sparse) {
177 sp_elements.setAt(QIntC::to_size(n), oh); 181 sp_elements.setAt(QIntC::to_size(n), oh);
178 } else { 182 } else {
179 - elements.setAt(QIntC::to_size(n), oh); 183 + size_t idx = size_t(n);
  184 + if (n < 0 || idx >= elements.elements.size()) {
  185 + throw std::logic_error("bounds error setting item in QPDF_Array");
  186 + }
  187 + elements.elements[idx] = oh.getObj();
180 } 188 }
181 } 189 }
182 190
libqpdf/qpdf/OHArray.hh
@@ -12,11 +12,9 @@ class OHArray @@ -12,11 +12,9 @@ class OHArray
12 { 12 {
13 public: 13 public:
14 OHArray(); 14 OHArray();
15 - void setAt(size_t idx, QPDFObjectHandle oh);  
16 void erase(size_t idx); 15 void erase(size_t idx);
17 void insert(size_t idx, QPDFObjectHandle oh); 16 void insert(size_t idx, QPDFObjectHandle oh);
18 OHArray copy(); 17 OHArray copy();
19 - void disconnect();  
20 18
21 private: 19 private:
22 friend class QPDF_Array; 20 friend class QPDF_Array;