Commit 40f1946df8acb0bb7fefdc3ab31f6285bb11d032

Authored by Jay Berkenbilt
1 parent dd4f3022

Replace PointerHolder arrays with shared_ptr arrays where possible

Replace PointerHolder arrays wherever it can be done without breaking ABI.
include/qpdf/Pl_Flate.hh
@@ -24,6 +24,7 @@ @@ -24,6 +24,7 @@
24 24
25 #include <qpdf/Pipeline.hh> 25 #include <qpdf/Pipeline.hh>
26 #include <functional> 26 #include <functional>
  27 +#include <memory>
27 28
28 class Pl_Flate: public Pipeline 29 class Pl_Flate: public Pipeline
29 { 30 {
@@ -73,7 +74,7 @@ class Pl_Flate: public Pipeline @@ -73,7 +74,7 @@ class Pl_Flate: public Pipeline
73 Members(size_t out_bufsize, action_e action); 74 Members(size_t out_bufsize, action_e action);
74 Members(Members const&); 75 Members(Members const&);
75 76
76 - PointerHolder<unsigned char> outbuf; 77 + std::shared_ptr<unsigned char> outbuf;
77 size_t out_bufsize; 78 size_t out_bufsize;
78 action_e action; 79 action_e action;
79 bool initialized; 80 bool initialized;
libqpdf/InputSource.cc
@@ -37,8 +37,8 @@ InputSource::readLine(size_t max_line_length) @@ -37,8 +37,8 @@ InputSource::readLine(size_t max_line_length)
37 // point to position the file had when this method was called. 37 // point to position the file had when this method was called.
38 38
39 qpdf_offset_t offset = this->tell(); 39 qpdf_offset_t offset = this->tell();
40 - char* buf = new char[max_line_length + 1];  
41 - PointerHolder<char> bp(true, buf); 40 + auto bp = std::make_unique<char[]>(max_line_length + 1);
  41 + char* buf = bp.get();
42 memset(buf, '\0', max_line_length + 1); 42 memset(buf, '\0', max_line_length + 1);
43 this->read(buf, max_line_length); 43 this->read(buf, max_line_length);
44 this->seek(offset, SEEK_SET); 44 this->seek(offset, SEEK_SET);
libqpdf/Pl_DCT.cc
@@ -283,8 +283,7 @@ Pl_DCT::compress(void* cinfo_p, Buffer* b) @@ -283,8 +283,7 @@ Pl_DCT::compress(void* cinfo_p, Buffer* b)
283 # pragma GCC diagnostic pop 283 # pragma GCC diagnostic pop
284 #endif 284 #endif
285 static int const BUF_SIZE = 65536; 285 static int const BUF_SIZE = 65536;
286 - PointerHolder<unsigned char> outbuffer_ph(  
287 - true, new unsigned char[BUF_SIZE]); 286 + auto outbuffer_ph = std::make_unique<unsigned char[]>(BUF_SIZE);
288 unsigned char* outbuffer = outbuffer_ph.get(); 287 unsigned char* outbuffer = outbuffer_ph.get();
289 jpeg_pipeline_dest(cinfo, outbuffer, BUF_SIZE, this->getNext()); 288 jpeg_pipeline_dest(cinfo, outbuffer, BUF_SIZE, this->getNext());
290 289
libqpdf/Pl_Flate.cc
@@ -16,8 +16,7 @@ Pl_Flate::Members::Members(size_t out_bufsize, @@ -16,8 +16,7 @@ Pl_Flate::Members::Members(size_t out_bufsize,
16 initialized(false), 16 initialized(false),
17 zdata(0) 17 zdata(0)
18 { 18 {
19 - this->outbuf = PointerHolder<unsigned char>(  
20 - true, new unsigned char[out_bufsize]); 19 + this->outbuf = QUtil::make_shared_array<unsigned char>(out_bufsize);
21 // Indirect through zdata to reach the z_stream so we don't have 20 // Indirect through zdata to reach the z_stream so we don't have
22 // to include zlib.h in Pl_Flate.hh. This means people using 21 // to include zlib.h in Pl_Flate.hh. This means people using
23 // shared library versions of qpdf don't have to have zlib 22 // shared library versions of qpdf don't have to have zlib
libqpdf/QPDF_encryption.cc
@@ -204,8 +204,7 @@ iterate_rc4(unsigned char* data, size_t data_len, @@ -204,8 +204,7 @@ iterate_rc4(unsigned char* data, size_t data_len,
204 unsigned char* okey, int key_len, 204 unsigned char* okey, int key_len,
205 int iterations, bool reverse) 205 int iterations, bool reverse)
206 { 206 {
207 - PointerHolder<unsigned char> key_ph = PointerHolder<unsigned char>(  
208 - true, new unsigned char[QIntC::to_size(key_len)]); 207 + auto key_ph = std::make_unique<unsigned char[]>(QIntC::to_size(key_len));
209 unsigned char* key = key_ph.get(); 208 unsigned char* key = key_ph.get();
210 for (int i = 0; i < iterations; ++i) 209 for (int i = 0; i < iterations; ++i)
211 { 210 {
libqpdf/QPDF_linearization.cc
@@ -97,9 +97,9 @@ QPDF::isLinearized() @@ -97,9 +97,9 @@ QPDF::isLinearized()
97 // Add a byte for a null terminator. 97 // Add a byte for a null terminator.
98 static int const tbuf_size = 1025; 98 static int const tbuf_size = 1025;
99 99
100 - char* buf = new char[tbuf_size]; 100 + auto b = std::make_unique<char[]>(tbuf_size);
  101 + char* buf = b.get();
101 this->m->file->seek(0, SEEK_SET); 102 this->m->file->seek(0, SEEK_SET);
102 - PointerHolder<char> b(true, buf);  
103 memset(buf, '\0', tbuf_size); 103 memset(buf, '\0', tbuf_size);
104 this->m->file->read(buf, tbuf_size - 1); 104 this->m->file->read(buf, tbuf_size - 1);
105 105