Commit c62e8e2b285b9b401d6add5a7a0da98c7ea86373
1 parent
3f22bea0
Update for clean compile with POINTERHOLDER_TRANSITION=2
Showing
39 changed files
with
170 additions
and
128 deletions
autoconf.mk.in
examples/pdf-filter-tokens.cc
| ... | ... | @@ -220,8 +220,11 @@ int main(int argc, char* argv[]) |
| 220 | 220 | // applied. See comments on the filters for additional |
| 221 | 221 | // details. |
| 222 | 222 | QPDFPageObjectHelper& page(*iter); |
| 223 | - page.addContentTokenFilter(new StringReverser); | |
| 224 | - page.addContentTokenFilter(new ColorToGray); | |
| 223 | + page.addContentTokenFilter( | |
| 224 | + PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 225 | + new StringReverser)); | |
| 226 | + page.addContentTokenFilter( | |
| 227 | + PointerHolder<QPDFObjectHandle::TokenFilter>(new ColorToGray)); | |
| 225 | 228 | } |
| 226 | 229 | |
| 227 | 230 | QPDFWriter w(pdf, outfilename); | ... | ... |
examples/pdf-invert-images.cc
| ... | ... | @@ -139,7 +139,7 @@ int main(int argc, char* argv[]) |
| 139 | 139 | qpdf.processFile(infilename, password); |
| 140 | 140 | |
| 141 | 141 | ImageInverter* inv = new ImageInverter; |
| 142 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> p = inv; | |
| 142 | + auto p = PointerHolder<QPDFObjectHandle::StreamDataProvider>(inv); | |
| 143 | 143 | |
| 144 | 144 | // For each page... |
| 145 | 145 | std::vector<QPDFPageObjectHelper> pages = | ... | ... |
fuzz/qpdf_fuzzer.cc
| ... | ... | @@ -47,9 +47,9 @@ FuzzHelper::FuzzHelper(unsigned char const* data, size_t size) : |
| 47 | 47 | PointerHolder<QPDF> |
| 48 | 48 | FuzzHelper::getQpdf() |
| 49 | 49 | { |
| 50 | - PointerHolder<InputSource> is = | |
| 51 | - new BufferInputSource("fuzz input", &this->input_buffer); | |
| 52 | - PointerHolder<QPDF> qpdf = new QPDF(); | |
| 50 | + auto is = PointerHolder<InputSource>( | |
| 51 | + new BufferInputSource("fuzz input", &this->input_buffer)); | |
| 52 | + auto qpdf = make_pointer_holder<QPDF>(); | |
| 53 | 53 | qpdf->processInputSource(is); |
| 54 | 54 | return qpdf; |
| 55 | 55 | } |
| ... | ... | @@ -57,7 +57,7 @@ FuzzHelper::getQpdf() |
| 57 | 57 | PointerHolder<QPDFWriter> |
| 58 | 58 | FuzzHelper::getWriter(PointerHolder<QPDF> qpdf) |
| 59 | 59 | { |
| 60 | - PointerHolder<QPDFWriter> w = new QPDFWriter(*qpdf); | |
| 60 | + auto w = make_pointer_holder<QPDFWriter>(*qpdf); | |
| 61 | 61 | w->setOutputPipeline(&this->discard); |
| 62 | 62 | w->setDecodeLevel(qpdf_dl_all); |
| 63 | 63 | return w; | ... | ... |
include/qpdf/Buffer.hh
include/qpdf/ClosedFileInputSource.hh
include/qpdf/InputSource.hh
include/qpdf/JSON.hh
include/qpdf/Pipeline.hh
include/qpdf/Pl_Buffer.hh
include/qpdf/Pl_QPDFTokenizer.hh
| ... | ... | @@ -29,6 +29,8 @@ |
| 29 | 29 | #include <qpdf/QPDFObjectHandle.hh> |
| 30 | 30 | #include <qpdf/Pl_Buffer.hh> |
| 31 | 31 | |
| 32 | +#include <memory> | |
| 33 | + | |
| 32 | 34 | // Tokenize the incoming text using QPDFTokenizer and pass the tokens |
| 33 | 35 | // in turn to a QPDFObjectHandle::TokenFilter object. All bytes of |
| 34 | 36 | // incoming content will be included in exactly one token and passed | ... | ... |
include/qpdf/QPDFObjectHandle.hh
include/qpdf/QPDFTokenizer.hh
libqpdf/Buffer.cc
| ... | ... | @@ -57,7 +57,7 @@ Buffer::copy(Buffer const& rhs) |
| 57 | 57 | { |
| 58 | 58 | if (this != &rhs) |
| 59 | 59 | { |
| 60 | - this->m = new Members(rhs.m->size, 0, true); | |
| 60 | + this->m = PointerHolder<Members>(new Members(rhs.m->size, 0, true)); | |
| 61 | 61 | if (this->m->size) |
| 62 | 62 | { |
| 63 | 63 | memcpy(this->m->buf, rhs.m->buf, this->m->size); | ... | ... |
libqpdf/ClosedFileInputSource.cc
| ... | ... | @@ -27,7 +27,7 @@ ClosedFileInputSource::before() |
| 27 | 27 | { |
| 28 | 28 | if (0 == this->m->fis.get()) |
| 29 | 29 | { |
| 30 | - this->m->fis = new FileInputSource(); | |
| 30 | + this->m->fis = make_pointer_holder<FileInputSource>(); | |
| 31 | 31 | this->m->fis->setFilename(this->m->filename.c_str()); |
| 32 | 32 | this->m->fis->seek(this->m->offset, SEEK_SET); |
| 33 | 33 | this->m->fis->setLastOffset(this->last_offset); | ... | ... |
libqpdf/FileInputSource.cc
| ... | ... | @@ -27,7 +27,7 @@ FileInputSource::FileInputSource() : |
| 27 | 27 | void |
| 28 | 28 | FileInputSource::setFilename(char const* filename) |
| 29 | 29 | { |
| 30 | - this->m = new Members(true); | |
| 30 | + this->m = PointerHolder<Members>(new Members(true)); | |
| 31 | 31 | this->m->filename = filename; |
| 32 | 32 | this->m->file = QUtil::safe_fopen(filename, "rb"); |
| 33 | 33 | } |
| ... | ... | @@ -36,7 +36,7 @@ void |
| 36 | 36 | FileInputSource::setFile( |
| 37 | 37 | char const* description, FILE* filep, bool close_file) |
| 38 | 38 | { |
| 39 | - this->m = new Members(close_file); | |
| 39 | + this->m = PointerHolder<Members>(new Members(close_file)); | |
| 40 | 40 | this->m->filename = description; |
| 41 | 41 | this->m->file = filep; |
| 42 | 42 | this->seek(0, SEEK_SET); | ... | ... |
libqpdf/Pl_Buffer.cc
| ... | ... | @@ -31,14 +31,14 @@ Pl_Buffer::write(unsigned char* buf, size_t len) |
| 31 | 31 | { |
| 32 | 32 | if (this->m->data.get() == 0) |
| 33 | 33 | { |
| 34 | - this->m->data = new Buffer(len); | |
| 34 | + this->m->data = make_pointer_holder<Buffer>(len); | |
| 35 | 35 | } |
| 36 | 36 | size_t cur_size = this->m->data->getSize(); |
| 37 | 37 | size_t left = cur_size - this->m->total_size; |
| 38 | 38 | if (left < len) |
| 39 | 39 | { |
| 40 | 40 | size_t new_size = std::max(this->m->total_size + len, 2 * cur_size); |
| 41 | - PointerHolder<Buffer> b = new Buffer(new_size); | |
| 41 | + auto b = make_pointer_holder<Buffer>(new_size); | |
| 42 | 42 | memcpy(b->getBuffer(), this->m->data->getBuffer(), this->m->total_size); |
| 43 | 43 | this->m->data = b; |
| 44 | 44 | } |
| ... | ... | @@ -108,5 +108,5 @@ Pl_Buffer::getMallocBuffer(unsigned char **buf, size_t* len) |
| 108 | 108 | { |
| 109 | 109 | *buf = nullptr; |
| 110 | 110 | } |
| 111 | - this->m = new Members(); | |
| 111 | + this->m = PointerHolder<Members>(new Members()); | |
| 112 | 112 | } | ... | ... |
libqpdf/Pl_QPDFTokenizer.cc
| ... | ... | @@ -43,10 +43,10 @@ void |
| 43 | 43 | Pl_QPDFTokenizer::finish() |
| 44 | 44 | { |
| 45 | 45 | this->m->buf.finish(); |
| 46 | - PointerHolder<InputSource> input = | |
| 46 | + auto input = PointerHolder<InputSource>( | |
| 47 | 47 | new BufferInputSource("tokenizer data", |
| 48 | - this->m->buf.getBuffer(), true); | |
| 49 | - | |
| 48 | + this->m->buf.getBuffer(), true)); | |
| 49 | + | |
| 50 | 50 | while (true) |
| 51 | 51 | { |
| 52 | 52 | QPDFTokenizer::Token token = this->m->tokenizer.readToken( | ... | ... |
libqpdf/QPDF.cc
| ... | ... | @@ -269,7 +269,7 @@ QPDF::processFile(char const* filename, char const* password) |
| 269 | 269 | { |
| 270 | 270 | FileInputSource* fi = new FileInputSource(); |
| 271 | 271 | fi->setFilename(filename); |
| 272 | - processInputSource(fi, password); | |
| 272 | + processInputSource(PointerHolder<InputSource>(fi), password); | |
| 273 | 273 | } |
| 274 | 274 | |
| 275 | 275 | void |
| ... | ... | @@ -278,7 +278,7 @@ QPDF::processFile(char const* description, FILE* filep, |
| 278 | 278 | { |
| 279 | 279 | FileInputSource* fi = new FileInputSource(); |
| 280 | 280 | fi->setFile(description, filep, close_file); |
| 281 | - processInputSource(fi, password); | |
| 281 | + processInputSource(PointerHolder<InputSource>(fi), password); | |
| 282 | 282 | } |
| 283 | 283 | |
| 284 | 284 | void |
| ... | ... | @@ -287,10 +287,11 @@ QPDF::processMemoryFile(char const* description, |
| 287 | 287 | char const* password) |
| 288 | 288 | { |
| 289 | 289 | processInputSource( |
| 290 | - new BufferInputSource( | |
| 291 | - description, | |
| 292 | - new Buffer(QUtil::unsigned_char_pointer(buf), length), | |
| 293 | - true), | |
| 290 | + PointerHolder<InputSource>( | |
| 291 | + new BufferInputSource( | |
| 292 | + description, | |
| 293 | + new Buffer(QUtil::unsigned_char_pointer(buf), length), | |
| 294 | + true)), | |
| 294 | 295 | password); |
| 295 | 296 | } |
| 296 | 297 | |
| ... | ... | @@ -305,7 +306,7 @@ QPDF::processInputSource(PointerHolder<InputSource> source, |
| 305 | 306 | void |
| 306 | 307 | QPDF::closeInputSource() |
| 307 | 308 | { |
| 308 | - this->m->file = new InvalidInputSource(); | |
| 309 | + this->m->file = PointerHolder<InputSource>(new InvalidInputSource()); | |
| 309 | 310 | } |
| 310 | 311 | |
| 311 | 312 | void |
| ... | ... | @@ -425,7 +426,8 @@ QPDF::findHeader() |
| 425 | 426 | // offsets in the file are such that 0 points to the |
| 426 | 427 | // beginning of the header. |
| 427 | 428 | QTC::TC("qpdf", "QPDF global offset"); |
| 428 | - this->m->file = new OffsetInputSource(this->m->file, global_offset); | |
| 429 | + this->m->file = PointerHolder<InputSource>( | |
| 430 | + new OffsetInputSource(this->m->file, global_offset)); | |
| 429 | 431 | } |
| 430 | 432 | } |
| 431 | 433 | return valid; |
| ... | ... | @@ -1607,7 +1609,8 @@ QPDF::readObject(PointerHolder<InputSource> input, |
| 1607 | 1609 | StringDecrypter* decrypter = 0; |
| 1608 | 1610 | if (this->m->encp->encrypted && (! in_object_stream)) |
| 1609 | 1611 | { |
| 1610 | - decrypter_ph = new StringDecrypter(this, objid, generation); | |
| 1612 | + decrypter_ph = make_pointer_holder<StringDecrypter>( | |
| 1613 | + this, objid, generation); | |
| 1611 | 1614 | decrypter = decrypter_ph.get(); |
| 1612 | 1615 | } |
| 1613 | 1616 | QPDFObjectHandle object = QPDFObjectHandle::parse( |
| ... | ... | @@ -2105,7 +2108,7 @@ QPDF::resolve(int objid, int generation) |
| 2105 | 2108 | "loop detected resolving object " + |
| 2106 | 2109 | QUtil::int_to_string(objid) + " " + |
| 2107 | 2110 | QUtil::int_to_string(generation))); |
| 2108 | - return new QPDF_Null; | |
| 2111 | + return PointerHolder<QPDFObject>(new QPDF_Null); | |
| 2109 | 2112 | } |
| 2110 | 2113 | ResolveRecorder rr(this, og); |
| 2111 | 2114 | |
| ... | ... | @@ -2231,10 +2234,11 @@ QPDF::resolveObjectsInStream(int obj_stream_number) |
| 2231 | 2234 | std::map<int, int> offsets; |
| 2232 | 2235 | |
| 2233 | 2236 | PointerHolder<Buffer> bp = obj_stream.getStreamData(qpdf_dl_specialized); |
| 2234 | - PointerHolder<InputSource> input = new BufferInputSource( | |
| 2235 | - this->m->file->getName() + | |
| 2236 | - " object stream " + QUtil::int_to_string(obj_stream_number), | |
| 2237 | - bp.get()); | |
| 2237 | + auto input = PointerHolder<InputSource>( | |
| 2238 | + new BufferInputSource( | |
| 2239 | + this->m->file->getName() + | |
| 2240 | + " object stream " + QUtil::int_to_string(obj_stream_number), | |
| 2241 | + bp.get())); | |
| 2238 | 2242 | |
| 2239 | 2243 | for (int i = 0; i < n; ++i) |
| 2240 | 2244 | { |
| ... | ... | @@ -2630,7 +2634,9 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) |
| 2630 | 2634 | { |
| 2631 | 2635 | this->m->copied_stream_data_provider = |
| 2632 | 2636 | new CopiedStreamDataProvider(*this); |
| 2633 | - this->m->copied_streams = this->m->copied_stream_data_provider; | |
| 2637 | + this->m->copied_streams = | |
| 2638 | + PointerHolder<QPDFObjectHandle::StreamDataProvider>( | |
| 2639 | + this->m->copied_stream_data_provider); | |
| 2634 | 2640 | } |
| 2635 | 2641 | QPDFObjGen local_og(result.getObjGen()); |
| 2636 | 2642 | // Copy information from the foreign stream so we can pipe its |
| ... | ... | @@ -2686,8 +2692,8 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) |
| 2686 | 2692 | } |
| 2687 | 2693 | else |
| 2688 | 2694 | { |
| 2689 | - PointerHolder<ForeignStreamData> foreign_stream_data = | |
| 2690 | - new ForeignStreamData( | |
| 2695 | + auto foreign_stream_data = | |
| 2696 | + make_pointer_holder<ForeignStreamData>( | |
| 2691 | 2697 | foreign_stream_qpdf->m->encp, |
| 2692 | 2698 | foreign_stream_qpdf->m->file, |
| 2693 | 2699 | foreign.getObjectID(), | ... | ... |
libqpdf/QPDFAcroFormDocumentHelper.cc
| ... | ... | @@ -768,7 +768,7 @@ QPDFAcroFormDocumentHelper::adjustDefaultAppearances( |
| 768 | 768 | ResourceReplacer rr(dr_map, rf.getNamesByResourceType()); |
| 769 | 769 | Pl_Buffer buf_pl("filtered DA"); |
| 770 | 770 | da_stream.filterAsContents(&rr, &buf_pl); |
| 771 | - PointerHolder<Buffer> buf = buf_pl.getBuffer(); | |
| 771 | + auto buf = buf_pl.getBufferSharedPointer(); | |
| 772 | 772 | std::string new_da( |
| 773 | 773 | reinterpret_cast<char*>(buf->getBuffer()), buf->getSize()); |
| 774 | 774 | obj.replaceKey("/DA", QPDFObjectHandle::newString(new_da)); |
| ... | ... | @@ -871,7 +871,7 @@ QPDFAcroFormDocumentHelper::adjustAppearanceStream( |
| 871 | 871 | QTC::TC("qpdf", "QPDFAcroFormDocumentHelper AP parse error"); |
| 872 | 872 | } |
| 873 | 873 | auto rr = new ResourceReplacer(dr_map, rf.getNamesByResourceType()); |
| 874 | - PointerHolder<QPDFObjectHandle::TokenFilter> tf = rr; | |
| 874 | + auto tf = PointerHolder<QPDFObjectHandle::TokenFilter>(rr); | |
| 875 | 875 | stream.addTokenFilter(tf); |
| 876 | 876 | } |
| 877 | 877 | catch (std::exception& e) |
| ... | ... | @@ -902,7 +902,7 @@ QPDFAcroFormDocumentHelper::transformAnnotations( |
| 902 | 902 | } |
| 903 | 903 | else if ((from_qpdf != &this->qpdf) && (! from_afdh)) |
| 904 | 904 | { |
| 905 | - afdhph = new QPDFAcroFormDocumentHelper(*from_qpdf); | |
| 905 | + afdhph = make_pointer_holder<QPDFAcroFormDocumentHelper>(*from_qpdf); | |
| 906 | 906 | from_afdh = afdhph.get(); |
| 907 | 907 | } |
| 908 | 908 | bool foreign = (from_qpdf != &this->qpdf); | ... | ... |
libqpdf/QPDFFormFieldObjectHelper.cc
| ... | ... | @@ -1008,5 +1008,7 @@ QPDFFormFieldObjectHelper::generateTextAppearance( |
| 1008 | 1008 | opt.at(i) = (*encoder)(opt.at(i), '?'); |
| 1009 | 1009 | } |
| 1010 | 1010 | |
| 1011 | - AS.addTokenFilter(new ValueSetter(DA, V, opt, tf, bbox)); | |
| 1011 | + AS.addTokenFilter( | |
| 1012 | + PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 1013 | + new ValueSetter(DA, V, opt, tf, bbox))); | |
| 1012 | 1014 | } | ... | ... |
libqpdf/QPDFJob.cc
| ... | ... | @@ -2854,14 +2854,14 @@ QPDFJob::handlePageSpecs( |
| 2854 | 2854 | { |
| 2855 | 2855 | QTC::TC("qpdf", "QPDFJob keep files open n"); |
| 2856 | 2856 | cis = new ClosedFileInputSource(page_spec.filename.c_str()); |
| 2857 | - is = cis; | |
| 2857 | + is = PointerHolder<InputSource>(cis); | |
| 2858 | 2858 | cis->stayOpen(true); |
| 2859 | 2859 | } |
| 2860 | 2860 | else |
| 2861 | 2861 | { |
| 2862 | 2862 | QTC::TC("qpdf", "QPDFJob keep files open y"); |
| 2863 | 2863 | FileInputSource* fis = new FileInputSource(); |
| 2864 | - is = fis; | |
| 2864 | + is = PointerHolder<InputSource>(fis); | |
| 2865 | 2865 | fis->setFilename(page_spec.filename.c_str()); |
| 2866 | 2866 | } |
| 2867 | 2867 | std::shared_ptr<QPDF> qpdf_ph = processInputSource(is, password); |
| ... | ... | @@ -3489,9 +3489,10 @@ QPDFJob::setWriterOptions(QPDF& pdf, QPDFWriter& w) |
| 3489 | 3489 | if (m->progress && m->outfilename) |
| 3490 | 3490 | { |
| 3491 | 3491 | w.registerProgressReporter( |
| 3492 | - new ProgressReporter( | |
| 3493 | - *(this->m->cout), this->m->message_prefix, | |
| 3494 | - m->outfilename.get())); | |
| 3492 | + PointerHolder<QPDFWriter::ProgressReporter>( | |
| 3493 | + new ProgressReporter( | |
| 3494 | + *(this->m->cout), this->m->message_prefix, | |
| 3495 | + m->outfilename.get()))); | |
| 3495 | 3496 | } |
| 3496 | 3497 | } |
| 3497 | 3498 | ... | ... |
libqpdf/QPDFObjectHandle.cc
| ... | ... | @@ -1603,7 +1603,7 @@ QPDFObjectHandle::replaceStreamData(std::string const& data, |
| 1603 | 1603 | QPDFObjectHandle const& decode_parms) |
| 1604 | 1604 | { |
| 1605 | 1605 | assertStream(); |
| 1606 | - PointerHolder<Buffer> b = new Buffer(data.length()); | |
| 1606 | + auto b = make_pointer_holder<Buffer>(data.length()); | |
| 1607 | 1607 | unsigned char* bp = b->getBuffer(); |
| 1608 | 1608 | memcpy(bp, data.c_str(), data.length()); |
| 1609 | 1609 | dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData( |
| ... | ... | @@ -1659,7 +1659,8 @@ QPDFObjectHandle::replaceStreamData(std::function<void(Pipeline*)> provider, |
| 1659 | 1659 | QPDFObjectHandle const& decode_parms) |
| 1660 | 1660 | { |
| 1661 | 1661 | assertStream(); |
| 1662 | - PointerHolder<StreamDataProvider> sdp = new FunctionProvider(provider); | |
| 1662 | + auto sdp = PointerHolder<StreamDataProvider>( | |
| 1663 | + new FunctionProvider(provider)); | |
| 1663 | 1664 | dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData( |
| 1664 | 1665 | sdp, filter, decode_parms); |
| 1665 | 1666 | } |
| ... | ... | @@ -1671,7 +1672,8 @@ QPDFObjectHandle::replaceStreamData( |
| 1671 | 1672 | QPDFObjectHandle const& decode_parms) |
| 1672 | 1673 | { |
| 1673 | 1674 | assertStream(); |
| 1674 | - PointerHolder<StreamDataProvider> sdp = new FunctionProvider(provider); | |
| 1675 | + auto sdp = PointerHolder<StreamDataProvider>( | |
| 1676 | + new FunctionProvider(provider)); | |
| 1675 | 1677 | dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData( |
| 1676 | 1678 | sdp, filter, decode_parms); |
| 1677 | 1679 | } |
| ... | ... | @@ -1886,8 +1888,8 @@ QPDFObjectHandle::coalesceContentStreams() |
| 1886 | 1888 | QPDFObjectHandle new_contents = newStream(qpdf); |
| 1887 | 1889 | this->replaceKey("/Contents", new_contents); |
| 1888 | 1890 | |
| 1889 | - PointerHolder<StreamDataProvider> provider = | |
| 1890 | - new CoalesceProvider(*this, contents); | |
| 1891 | + auto provider = PointerHolder<StreamDataProvider>( | |
| 1892 | + new CoalesceProvider(*this, contents)); | |
| 1891 | 1893 | new_contents.replaceStreamData(provider, newNull(), newNull()); |
| 1892 | 1894 | } |
| 1893 | 1895 | |
| ... | ... | @@ -1976,8 +1978,8 @@ QPDFObjectHandle::parse(QPDF* context, |
| 1976 | 1978 | std::string const& object_str, |
| 1977 | 1979 | std::string const& object_description) |
| 1978 | 1980 | { |
| 1979 | - PointerHolder<InputSource> input = | |
| 1980 | - new BufferInputSource("parsed object", object_str); | |
| 1981 | + auto input = PointerHolder<InputSource>( | |
| 1982 | + new BufferInputSource("parsed object", object_str)); | |
| 1981 | 1983 | QPDFTokenizer tokenizer; |
| 1982 | 1984 | bool empty = false; |
| 1983 | 1985 | QPDFObjectHandle result = |
| ... | ... | @@ -2103,7 +2105,7 @@ QPDFObjectHandle::parseContentStream_internal( |
| 2103 | 2105 | Pl_Buffer buf("concatenated stream data buffer"); |
| 2104 | 2106 | std::string all_description; |
| 2105 | 2107 | pipeContentStreams(&buf, description, all_description); |
| 2106 | - PointerHolder<Buffer> stream_data = buf.getBuffer(); | |
| 2108 | + auto stream_data = buf.getBufferSharedPointer(); | |
| 2107 | 2109 | callbacks->contentSize(stream_data->getSize()); |
| 2108 | 2110 | try |
| 2109 | 2111 | { |
| ... | ... | @@ -2125,8 +2127,8 @@ QPDFObjectHandle::parseContentStream_data( |
| 2125 | 2127 | QPDF* context) |
| 2126 | 2128 | { |
| 2127 | 2129 | size_t stream_length = stream_data->getSize(); |
| 2128 | - PointerHolder<InputSource> input = | |
| 2129 | - new BufferInputSource(description, stream_data.get()); | |
| 2130 | + auto input = PointerHolder<InputSource>( | |
| 2131 | + new BufferInputSource(description, stream_data.get())); | |
| 2130 | 2132 | QPDFTokenizer tokenizer; |
| 2131 | 2133 | tokenizer.allowEOF(); |
| 2132 | 2134 | bool empty = false; |
| ... | ... | @@ -3078,32 +3080,32 @@ QPDFObjectHandle::copyObject(std::set<QPDFObjGen>& visited, |
| 3078 | 3080 | if (isBool()) |
| 3079 | 3081 | { |
| 3080 | 3082 | QTC::TC("qpdf", "QPDFObjectHandle clone bool"); |
| 3081 | - new_obj = new QPDF_Bool(getBoolValue()); | |
| 3083 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Bool(getBoolValue())); | |
| 3082 | 3084 | } |
| 3083 | 3085 | else if (isNull()) |
| 3084 | 3086 | { |
| 3085 | 3087 | QTC::TC("qpdf", "QPDFObjectHandle clone null"); |
| 3086 | - new_obj = new QPDF_Null(); | |
| 3088 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Null()); | |
| 3087 | 3089 | } |
| 3088 | 3090 | else if (isInteger()) |
| 3089 | 3091 | { |
| 3090 | 3092 | QTC::TC("qpdf", "QPDFObjectHandle clone integer"); |
| 3091 | - new_obj = new QPDF_Integer(getIntValue()); | |
| 3093 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Integer(getIntValue())); | |
| 3092 | 3094 | } |
| 3093 | 3095 | else if (isReal()) |
| 3094 | 3096 | { |
| 3095 | 3097 | QTC::TC("qpdf", "QPDFObjectHandle clone real"); |
| 3096 | - new_obj = new QPDF_Real(getRealValue()); | |
| 3098 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Real(getRealValue())); | |
| 3097 | 3099 | } |
| 3098 | 3100 | else if (isName()) |
| 3099 | 3101 | { |
| 3100 | 3102 | QTC::TC("qpdf", "QPDFObjectHandle clone name"); |
| 3101 | - new_obj = new QPDF_Name(getName()); | |
| 3103 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Name(getName())); | |
| 3102 | 3104 | } |
| 3103 | 3105 | else if (isString()) |
| 3104 | 3106 | { |
| 3105 | 3107 | QTC::TC("qpdf", "QPDFObjectHandle clone string"); |
| 3106 | - new_obj = new QPDF_String(getStringValue()); | |
| 3108 | + new_obj = PointerHolder<QPDFObject>(new QPDF_String(getStringValue())); | |
| 3107 | 3109 | } |
| 3108 | 3110 | else if (isArray()) |
| 3109 | 3111 | { |
| ... | ... | @@ -3121,7 +3123,7 @@ QPDFObjectHandle::copyObject(std::set<QPDFObjGen>& visited, |
| 3121 | 3123 | first_level_only, stop_at_streams); |
| 3122 | 3124 | } |
| 3123 | 3125 | } |
| 3124 | - new_obj = new QPDF_Array(items); | |
| 3126 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Array(items)); | |
| 3125 | 3127 | } |
| 3126 | 3128 | else if (isDictionary()) |
| 3127 | 3129 | { |
| ... | ... | @@ -3140,7 +3142,7 @@ QPDFObjectHandle::copyObject(std::set<QPDFObjGen>& visited, |
| 3140 | 3142 | first_level_only, stop_at_streams); |
| 3141 | 3143 | } |
| 3142 | 3144 | } |
| 3143 | - new_obj = new QPDF_Dictionary(items); | |
| 3145 | + new_obj = PointerHolder<QPDFObject>(new QPDF_Dictionary(items)); | |
| 3144 | 3146 | } |
| 3145 | 3147 | else |
| 3146 | 3148 | { |
| ... | ... | @@ -3461,7 +3463,7 @@ QPDFObjectHandle::dereference() |
| 3461 | 3463 | { |
| 3462 | 3464 | // QPDF::resolve never returns an uninitialized object, but |
| 3463 | 3465 | // check just in case. |
| 3464 | - this->obj = new QPDF_Null(); | |
| 3466 | + this->obj = PointerHolder<QPDFObject>(new QPDF_Null()); | |
| 3465 | 3467 | } |
| 3466 | 3468 | else if (dynamic_cast<QPDF_Reserved*>(obj.get())) |
| 3467 | 3469 | { | ... | ... |
libqpdf/QPDFOutlineDocumentHelper.cc
| ... | ... | @@ -114,7 +114,8 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name) |
| 114 | 114 | if (dests.isDictionary()) |
| 115 | 115 | { |
| 116 | 116 | this->m->names_dest = |
| 117 | - new QPDFNameTreeObjectHelper(dests, this->qpdf); | |
| 117 | + make_pointer_holder<QPDFNameTreeObjectHelper>( | |
| 118 | + dests, this->qpdf); | |
| 118 | 119 | } |
| 119 | 120 | } |
| 120 | 121 | } | ... | ... |
libqpdf/QPDFOutlineObjectHelper.cc
| ... | ... | @@ -34,7 +34,7 @@ QPDFOutlineObjectHelper::QPDFOutlineObjectHelper( |
| 34 | 34 | while (! cur.isNull()) |
| 35 | 35 | { |
| 36 | 36 | QPDFOutlineObjectHelper new_ooh(cur, dh, 1 + depth); |
| 37 | - new_ooh.m->parent = new QPDFOutlineObjectHelper(*this); | |
| 37 | + new_ooh.m->parent = make_pointer_holder<QPDFOutlineObjectHelper>(*this); | |
| 38 | 38 | this->m->kids.push_back(new_ooh); |
| 39 | 39 | cur = cur.getKey("/Next"); |
| 40 | 40 | } | ... | ... |
libqpdf/QPDFPageLabelDocumentHelper.cc
| ... | ... | @@ -17,7 +17,7 @@ QPDFPageLabelDocumentHelper::QPDFPageLabelDocumentHelper(QPDF& qpdf) : |
| 17 | 17 | QPDFObjectHandle root = qpdf.getRoot(); |
| 18 | 18 | if (root.hasKey("/PageLabels")) |
| 19 | 19 | { |
| 20 | - this->m->labels = new QPDFNumberTreeObjectHelper( | |
| 20 | + this->m->labels = make_pointer_holder<QPDFNumberTreeObjectHelper>( | |
| 21 | 21 | root.getKey("/PageLabels"), this->qpdf); |
| 22 | 22 | } |
| 23 | 23 | } | ... | ... |
libqpdf/QPDFPageObjectHelper.cc
| ... | ... | @@ -258,7 +258,7 @@ InlineImageTracker::handleToken(QPDFTokenizer::Token const& token) |
| 258 | 258 | std::string name = resources.getUniqueResourceName( |
| 259 | 259 | "/IIm", this->min_suffix); |
| 260 | 260 | QPDFObjectHandle image = QPDFObjectHandle::newStream( |
| 261 | - this->qpdf, b.getBuffer()); | |
| 261 | + this->qpdf, b.getBufferSharedPointer()); | |
| 262 | 262 | image.replaceDict(dict); |
| 263 | 263 | resources.getKey("/XObject").replaceKey(name, image); |
| 264 | 264 | write(name); |
| ... | ... | @@ -521,7 +521,7 @@ QPDFPageObjectHelper::externalizeInlineImages(size_t min_size, bool shallow) |
| 521 | 521 | if (this->oh.isFormXObject()) |
| 522 | 522 | { |
| 523 | 523 | this->oh.replaceStreamData( |
| 524 | - b.getBuffer(), | |
| 524 | + b.getBufferSharedPointer(), | |
| 525 | 525 | QPDFObjectHandle::newNull(), |
| 526 | 526 | QPDFObjectHandle::newNull()); |
| 527 | 527 | } |
| ... | ... | @@ -530,7 +530,8 @@ QPDFPageObjectHelper::externalizeInlineImages(size_t min_size, bool shallow) |
| 530 | 530 | this->oh.replaceKey( |
| 531 | 531 | "/Contents", |
| 532 | 532 | QPDFObjectHandle::newStream( |
| 533 | - this->oh.getOwningQPDF(), b.getBuffer())); | |
| 533 | + this->oh.getOwningQPDF(), | |
| 534 | + b.getBufferSharedPointer())); | |
| 534 | 535 | } |
| 535 | 536 | } |
| 536 | 537 | } |
| ... | ... | @@ -914,8 +915,8 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations) |
| 914 | 915 | " XObject created from page will not work"); |
| 915 | 916 | } |
| 916 | 917 | newdict.replaceKey("/BBox", bbox); |
| 917 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> provider = | |
| 918 | - new ContentProvider(this->oh); | |
| 918 | + auto provider = PointerHolder<QPDFObjectHandle::StreamDataProvider>( | |
| 919 | + new ContentProvider(this->oh)); | |
| 919 | 920 | result.replaceStreamData( |
| 920 | 921 | provider, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); |
| 921 | 922 | QPDFObjectHandle rotate_obj = getAttribute("/Rotate", false); |
| ... | ... | @@ -1221,7 +1222,7 @@ QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper* afdh) |
| 1221 | 1222 | PointerHolder<QPDFAcroFormDocumentHelper> afdhph; |
| 1222 | 1223 | if (! afdh) |
| 1223 | 1224 | { |
| 1224 | - afdhph = new QPDFAcroFormDocumentHelper(*qpdf); | |
| 1225 | + afdhph = make_pointer_holder<QPDFAcroFormDocumentHelper>(*qpdf); | |
| 1225 | 1226 | afdh = afdhph.get(); |
| 1226 | 1227 | } |
| 1227 | 1228 | afdh->transformAnnotations( |
| ... | ... | @@ -1269,7 +1270,7 @@ QPDFPageObjectHelper::copyAnnotations( |
| 1269 | 1270 | PointerHolder<QPDFAcroFormDocumentHelper> from_afdhph; |
| 1270 | 1271 | if (! afdh) |
| 1271 | 1272 | { |
| 1272 | - afdhph = new QPDFAcroFormDocumentHelper(*this_qpdf); | |
| 1273 | + afdhph = make_pointer_holder<QPDFAcroFormDocumentHelper>(*this_qpdf); | |
| 1273 | 1274 | afdh = afdhph.get(); |
| 1274 | 1275 | } |
| 1275 | 1276 | if (this_qpdf == from_qpdf) |
| ... | ... | @@ -1287,7 +1288,8 @@ QPDFPageObjectHelper::copyAnnotations( |
| 1287 | 1288 | } |
| 1288 | 1289 | else |
| 1289 | 1290 | { |
| 1290 | - from_afdhph = new QPDFAcroFormDocumentHelper(*from_qpdf); | |
| 1291 | + from_afdhph = | |
| 1292 | + make_pointer_holder<QPDFAcroFormDocumentHelper>(*from_qpdf); | |
| 1291 | 1293 | from_afdh = from_afdhph.get(); |
| 1292 | 1294 | } |
| 1293 | 1295 | ... | ... |
libqpdf/QPDFWriter.cc
| ... | ... | @@ -1108,7 +1108,7 @@ QPDFWriter::PipelinePopper::~PipelinePopper() |
| 1108 | 1108 | Pl_Buffer* buf = dynamic_cast<Pl_Buffer*>(p); |
| 1109 | 1109 | if (bp && buf) |
| 1110 | 1110 | { |
| 1111 | - *bp = buf->getBuffer(); | |
| 1111 | + *bp = buf->getBufferSharedPointer(); | |
| 1112 | 1112 | } |
| 1113 | 1113 | delete p; |
| 1114 | 1114 | } |
| ... | ... | @@ -1918,7 +1918,7 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, |
| 1918 | 1918 | this->m->cur_data_key.length()); |
| 1919 | 1919 | pl.write(QUtil::unsigned_char_pointer(val), val.length()); |
| 1920 | 1920 | pl.finish(); |
| 1921 | - PointerHolder<Buffer> buf = bufpl.getBuffer(); | |
| 1921 | + auto buf = bufpl.getBufferSharedPointer(); | |
| 1922 | 1922 | val = QPDF_String( |
| 1923 | 1923 | std::string(reinterpret_cast<char*>(buf->getBuffer()), |
| 1924 | 1924 | buf->getSize())).unparse(true); |
| ... | ... | @@ -3231,8 +3231,8 @@ QPDFWriter::writeLinearized() |
| 3231 | 3231 | // Write file in two passes. Part numbers refer to PDF spec 1.4. |
| 3232 | 3232 | |
| 3233 | 3233 | FILE* lin_pass1_file = 0; |
| 3234 | - PointerHolder<PipelinePopper> pp_pass1 = new PipelinePopper(this); | |
| 3235 | - PointerHolder<PipelinePopper> pp_md5 = new PipelinePopper(this); | |
| 3234 | + auto pp_pass1 = make_pointer_holder<PipelinePopper>(this); | |
| 3235 | + auto pp_md5 = make_pointer_holder<PipelinePopper>(this); | |
| 3236 | 3236 | for (int pass = 1; pass <= 2; ++pass) |
| 3237 | 3237 | { |
| 3238 | 3238 | if (pass == 1) |
| ... | ... | @@ -3623,7 +3623,7 @@ QPDFWriter::registerProgressReporter(PointerHolder<ProgressReporter> pr) |
| 3623 | 3623 | void |
| 3624 | 3624 | QPDFWriter::writeStandard() |
| 3625 | 3625 | { |
| 3626 | - PointerHolder<PipelinePopper> pp_md5 = new PipelinePopper(this); | |
| 3626 | + auto pp_md5 = make_pointer_holder<PipelinePopper>(this); | |
| 3627 | 3627 | if (this->m->deterministic_id) |
| 3628 | 3628 | { |
| 3629 | 3629 | pushMD5Pipeline(*pp_md5); | ... | ... |
libqpdf/QPDF_Stream.cc
| ... | ... | @@ -251,7 +251,7 @@ QPDF_Stream::getStreamData(qpdf_stream_decode_level_e decode_level) |
| 251 | 251 | "getStreamData called on unfilterable stream"); |
| 252 | 252 | } |
| 253 | 253 | QTC::TC("qpdf", "QPDF_Stream getStreamData"); |
| 254 | - return buf.getBuffer(); | |
| 254 | + return buf.getBufferSharedPointer(); | |
| 255 | 255 | } |
| 256 | 256 | |
| 257 | 257 | PointerHolder<Buffer> |
| ... | ... | @@ -265,7 +265,7 @@ QPDF_Stream::getRawStreamData() |
| 265 | 265 | "error getting raw stream data"); |
| 266 | 266 | } |
| 267 | 267 | QTC::TC("qpdf", "QPDF_Stream getRawStreamData"); |
| 268 | - return buf.getBuffer(); | |
| 268 | + return buf.getBufferSharedPointer(); | |
| 269 | 269 | } |
| 270 | 270 | |
| 271 | 271 | bool |
| ... | ... | @@ -479,7 +479,7 @@ QPDF_Stream::pipeStreamData(Pipeline* pipeline, bool* filterp, |
| 479 | 479 | |
| 480 | 480 | if (encode_flags & qpdf_ef_normalize) |
| 481 | 481 | { |
| 482 | - normalizer = new ContentNormalizer(); | |
| 482 | + normalizer = make_pointer_holder<ContentNormalizer>(); | |
| 483 | 483 | new_pipeline = std::make_shared<Pl_QPDFTokenizer>( |
| 484 | 484 | "normalizer", normalizer.get(), pipeline); |
| 485 | 485 | to_delete.push_back(new_pipeline); | ... | ... |
libqpdf/QPDF_encryption.cc
| ... | ... | @@ -245,7 +245,7 @@ process_with_aes(std::string const& key, |
| 245 | 245 | aes.write(QUtil::unsigned_char_pointer(data), data.length()); |
| 246 | 246 | } |
| 247 | 247 | aes.finish(); |
| 248 | - PointerHolder<Buffer> bufp = buffer.getBuffer(); | |
| 248 | + auto bufp = buffer.getBufferSharedPointer(); | |
| 249 | 249 | if (outlength == 0) |
| 250 | 250 | { |
| 251 | 251 | outlength = bufp->getSize(); |
| ... | ... | @@ -1200,7 +1200,7 @@ QPDF::decryptString(std::string& str, int objid, int generation) |
| 1200 | 1200 | key.length()); |
| 1201 | 1201 | pl.write(QUtil::unsigned_char_pointer(str), str.length()); |
| 1202 | 1202 | pl.finish(); |
| 1203 | - PointerHolder<Buffer> buf = bufpl.getBuffer(); | |
| 1203 | + auto buf = bufpl.getBufferSharedPointer(); | |
| 1204 | 1204 | str = std::string(reinterpret_cast<char*>(buf->getBuffer()), |
| 1205 | 1205 | buf->getSize()); |
| 1206 | 1206 | } | ... | ... |
libqpdf/QPDF_linearization.cc
| ... | ... | @@ -313,7 +313,7 @@ QPDF::readLinearizationData() |
| 313 | 313 | QPDFObjectHandle HS = H0.getKey("/S"); // shared object |
| 314 | 314 | QPDFObjectHandle HO = H0.getKey("/O"); // outline |
| 315 | 315 | |
| 316 | - PointerHolder<Buffer> hbp = pb.getBuffer(); | |
| 316 | + auto hbp = pb.getBufferSharedPointer(); | |
| 317 | 317 | Buffer* hb = hbp.get(); |
| 318 | 318 | unsigned char const* h_buf = hb->getBuffer(); |
| 319 | 319 | size_t h_size = hb->getSize(); |
| ... | ... | @@ -2282,5 +2282,5 @@ QPDF::generateHintStream(std::map<int, QPDFXRefEntry> const& xref, |
| 2282 | 2282 | } |
| 2283 | 2283 | c.finish(); |
| 2284 | 2284 | |
| 2285 | - hint_buffer = hint_stream.getBuffer(); | |
| 2285 | + hint_buffer = hint_stream.getBufferSharedPointer(); | |
| 2286 | 2286 | } | ... | ... |
libqpdf/qpdf-c.cc
| ... | ... | @@ -104,12 +104,13 @@ static void call_read_memory(qpdf_data qpdf) |
| 104 | 104 | // must set qpdf->filename |
| 105 | 105 | static void call_init_write(qpdf_data qpdf) |
| 106 | 106 | { |
| 107 | - qpdf->qpdf_writer = new QPDFWriter(*(qpdf->qpdf), qpdf->filename); | |
| 107 | + qpdf->qpdf_writer = make_pointer_holder<QPDFWriter>( | |
| 108 | + *(qpdf->qpdf), qpdf->filename); | |
| 108 | 109 | } |
| 109 | 110 | |
| 110 | 111 | static void call_init_write_memory(qpdf_data qpdf) |
| 111 | 112 | { |
| 112 | - qpdf->qpdf_writer = new QPDFWriter(*(qpdf->qpdf)); | |
| 113 | + qpdf->qpdf_writer = make_pointer_holder<QPDFWriter>(*(qpdf->qpdf)); | |
| 113 | 114 | qpdf->qpdf_writer->setOutputMemory(); |
| 114 | 115 | } |
| 115 | 116 | |
| ... | ... | @@ -137,17 +138,19 @@ static QPDF_ERROR_CODE trap_errors( |
| 137 | 138 | } |
| 138 | 139 | catch (QPDFExc& e) |
| 139 | 140 | { |
| 140 | - qpdf->error = new QPDFExc(e); | |
| 141 | + qpdf->error = make_pointer_holder<QPDFExc>(e); | |
| 141 | 142 | status |= QPDF_ERRORS; |
| 142 | 143 | } |
| 143 | 144 | catch (std::runtime_error& e) |
| 144 | 145 | { |
| 145 | - qpdf->error = new QPDFExc(qpdf_e_system, "", "", 0, e.what()); | |
| 146 | + qpdf->error = make_pointer_holder<QPDFExc>( | |
| 147 | + qpdf_e_system, "", "", 0, e.what()); | |
| 146 | 148 | status |= QPDF_ERRORS; |
| 147 | 149 | } |
| 148 | 150 | catch (std::exception& e) |
| 149 | 151 | { |
| 150 | - qpdf->error = new QPDFExc(qpdf_e_internal, "", "", 0, e.what()); | |
| 152 | + qpdf->error = make_pointer_holder<QPDFExc>( | |
| 153 | + qpdf_e_internal, "", "", 0, e.what()); | |
| 151 | 154 | status |= QPDF_ERRORS; |
| 152 | 155 | } |
| 153 | 156 | |
| ... | ... | @@ -169,7 +172,7 @@ qpdf_data qpdf_init() |
| 169 | 172 | { |
| 170 | 173 | QTC::TC("qpdf", "qpdf-c called qpdf_init"); |
| 171 | 174 | qpdf_data qpdf = new _qpdf_data(); |
| 172 | - qpdf->qpdf = new QPDF(); | |
| 175 | + qpdf->qpdf = make_pointer_holder<QPDF>(); | |
| 173 | 176 | return qpdf; |
| 174 | 177 | } |
| 175 | 178 | |
| ... | ... | @@ -240,7 +243,8 @@ qpdf_error qpdf_next_warning(qpdf_data qpdf) |
| 240 | 243 | { |
| 241 | 244 | if (qpdf_more_warnings(qpdf)) |
| 242 | 245 | { |
| 243 | - qpdf->tmp_error.exc = new QPDFExc(qpdf->warnings.front()); | |
| 246 | + qpdf->tmp_error.exc = make_pointer_holder<QPDFExc>( | |
| 247 | + qpdf->warnings.front()); | |
| 244 | 248 | qpdf->warnings.pop_front(); |
| 245 | 249 | QTC::TC("qpdf", "qpdf-c qpdf_next_warning returned warning"); |
| 246 | 250 | return &qpdf->tmp_error; |
| ... | ... | @@ -543,7 +547,7 @@ static void qpdf_get_buffer_internal(qpdf_data qpdf) |
| 543 | 547 | { |
| 544 | 548 | if (qpdf->write_memory && (qpdf->output_buffer == 0)) |
| 545 | 549 | { |
| 546 | - qpdf->output_buffer = qpdf->qpdf_writer->getBuffer(); | |
| 550 | + qpdf->output_buffer = qpdf->qpdf_writer->getBufferSharedPointer(); | |
| 547 | 551 | } |
| 548 | 552 | } |
| 549 | 553 | |
| ... | ... | @@ -852,7 +856,8 @@ void qpdf_register_progress_reporter( |
| 852 | 856 | { |
| 853 | 857 | QTC::TC("qpdf", "qpdf-c registered progress reporter"); |
| 854 | 858 | qpdf->qpdf_writer->registerProgressReporter( |
| 855 | - new ProgressReporter(report_progress, data)); | |
| 859 | + PointerHolder<QPDFWriter::ProgressReporter>( | |
| 860 | + new ProgressReporter(report_progress, data))); | |
| 856 | 861 | } |
| 857 | 862 | |
| 858 | 863 | QPDF_ERROR_CODE qpdf_write(qpdf_data qpdf) |
| ... | ... | @@ -911,7 +916,7 @@ static qpdf_oh |
| 911 | 916 | new_object(qpdf_data qpdf, QPDFObjectHandle const& qoh) |
| 912 | 917 | { |
| 913 | 918 | qpdf_oh oh = ++qpdf->next_oh; // never return 0 |
| 914 | - qpdf->oh_cache[oh] = new QPDFObjectHandle(qoh); | |
| 919 | + qpdf->oh_cache[oh] = make_pointer_holder<QPDFObjectHandle>(qoh); | |
| 915 | 920 | return oh; |
| 916 | 921 | } |
| 917 | 922 | ... | ... |
libtests/concatenate.cc
| ... | ... | @@ -20,12 +20,12 @@ int main(int argc, char* argv[]) |
| 20 | 20 | pipeStringAndFinish(&concat, "-two-"); |
| 21 | 21 | concat.manualFinish(); |
| 22 | 22 | |
| 23 | - PointerHolder<Buffer> b1_buf = b1.getBuffer(); | |
| 23 | + auto b1_buf = b1.getBufferSharedPointer(); | |
| 24 | 24 | Pl_Buffer b2("uncompressed"); |
| 25 | 25 | Pl_Flate inflate("uncompress", &b2, Pl_Flate::a_inflate); |
| 26 | 26 | inflate.write(b1_buf->getBuffer(), b1_buf->getSize()); |
| 27 | 27 | inflate.finish(); |
| 28 | - PointerHolder<Buffer> b2_buf = b2.getBuffer(); | |
| 28 | + auto b2_buf = b2.getBufferSharedPointer(); | |
| 29 | 29 | std::string result(reinterpret_cast<char*>(b2_buf->getBuffer()), |
| 30 | 30 | b2_buf->getSize()); |
| 31 | 31 | if (result == "-one--two-") | ... | ... |
libtests/input_source.cc
| ... | ... | @@ -65,8 +65,8 @@ int main() |
| 65 | 65 | // Overlap so that the first check() would advance past the start |
| 66 | 66 | // of the next match |
| 67 | 67 | memcpy(b + 2037, "potato potato salad ", 20); |
| 68 | - PointerHolder<InputSource> is = | |
| 69 | - new BufferInputSource("test buffer input source", b1.get()); | |
| 68 | + auto is = PointerHolder<InputSource>( | |
| 69 | + new BufferInputSource("test buffer input source", b1.get())); | |
| 70 | 70 | Finder f1(is, "salad"); |
| 71 | 71 | check("find potato salad", true, |
| 72 | 72 | is->findFirst("potato", 0, 0, f1)); | ... | ... |
libtests/qutil.cc
| ... | ... | @@ -545,7 +545,7 @@ void read_from_file_test() |
| 545 | 545 | Pl_Buffer b2("buffer"); |
| 546 | 546 | // QUtil::file_provider also exercises QUtil::pipe_file |
| 547 | 547 | QUtil::file_provider("other-file")(&b2); |
| 548 | - PointerHolder<Buffer> buf2 = b2.getBuffer(); | |
| 548 | + auto buf2 = b2.getBufferSharedPointer(); | |
| 549 | 549 | assert(buf2->getSize() == size); |
| 550 | 550 | assert(memcmp(buf2->getBuffer(), p, size) == 0); |
| 551 | 551 | } | ... | ... |
qpdf/test_driver.cc
| ... | ... | @@ -294,7 +294,7 @@ static void test_0_1(QPDF& pdf, char const* arg2) |
| 294 | 294 | std::cout << "Raw stream data:" << std::endl; |
| 295 | 295 | std::cout.flush(); |
| 296 | 296 | QUtil::binary_stdout(); |
| 297 | - PointerHolder<Pl_StdioFile> out = new Pl_StdioFile("raw", stdout); | |
| 297 | + auto out = make_pointer_holder<Pl_StdioFile>("raw", stdout); | |
| 298 | 298 | qtest.pipeStreamData(out.get(), 0, qpdf_dl_none); |
| 299 | 299 | |
| 300 | 300 | std::cout << std::endl << "Uncompressed stream data:" << std::endl; |
| ... | ... | @@ -302,7 +302,7 @@ static void test_0_1(QPDF& pdf, char const* arg2) |
| 302 | 302 | { |
| 303 | 303 | std::cout.flush(); |
| 304 | 304 | QUtil::binary_stdout(); |
| 305 | - out = new Pl_StdioFile("filtered", stdout); | |
| 305 | + out = make_pointer_holder<Pl_StdioFile>("filtered", stdout); | |
| 306 | 306 | qtest.pipeStreamData(out.get(), 0, qpdf_dl_all); |
| 307 | 307 | std::cout << std::endl << "End of stream data" << std::endl; |
| 308 | 308 | } |
| ... | ... | @@ -343,7 +343,7 @@ static void test_2(QPDF& pdf, char const* arg2) |
| 343 | 343 | QPDFObjectHandle page = kids.getArrayItem(1); // second page |
| 344 | 344 | QPDFObjectHandle contents = page.getKey("/Contents"); |
| 345 | 345 | QUtil::binary_stdout(); |
| 346 | - PointerHolder<Pl_StdioFile> out = new Pl_StdioFile("filtered", stdout); | |
| 346 | + auto out = make_pointer_holder<Pl_StdioFile>("filtered", stdout); | |
| 347 | 347 | contents.pipeStreamData(out.get(), 0, qpdf_dl_generalized); |
| 348 | 348 | } |
| 349 | 349 | |
| ... | ... | @@ -356,8 +356,8 @@ static void test_3(QPDF& pdf, char const* arg2) |
| 356 | 356 | std::cout << "-- stream " << i << " --" << std::endl; |
| 357 | 357 | std::cout.flush(); |
| 358 | 358 | QUtil::binary_stdout(); |
| 359 | - PointerHolder<Pl_StdioFile> out = | |
| 360 | - new Pl_StdioFile("tokenized stream", stdout); | |
| 359 | + auto out = make_pointer_holder<Pl_StdioFile>( | |
| 360 | + "tokenized stream", stdout); | |
| 361 | 361 | stream.pipeStreamData(out.get(), |
| 362 | 362 | qpdf_ef_normalize, qpdf_dl_generalized); |
| 363 | 363 | } |
| ... | ... | @@ -538,11 +538,11 @@ static void test_8(QPDF& pdf, char const* arg2) |
| 538 | 538 | p2.write(QUtil::unsigned_char_pointer("new data for stream\n"), |
| 539 | 539 | 20); // no null! |
| 540 | 540 | p2.finish(); |
| 541 | - PointerHolder<Buffer> b = p1.getBuffer(); | |
| 541 | + auto b = p1.getBufferSharedPointer(); | |
| 542 | 542 | // This is a bogus way to use StreamDataProvider, but it does |
| 543 | 543 | // adequately test its functionality. |
| 544 | 544 | Provider* provider = new Provider(b); |
| 545 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> p = provider; | |
| 545 | + auto p = PointerHolder<QPDFObjectHandle::StreamDataProvider>(provider); | |
| 546 | 546 | qstream.replaceStreamData( |
| 547 | 547 | p, QPDFObjectHandle::newName("/FlateDecode"), |
| 548 | 548 | QPDFObjectHandle::newNull()); |
| ... | ... | @@ -572,7 +572,7 @@ static void test_9(QPDF& pdf, char const* arg2) |
| 572 | 572 | { |
| 573 | 573 | QPDFObjectHandle root = pdf.getRoot(); |
| 574 | 574 | // Explicitly exercise the Buffer version of newStream |
| 575 | - PointerHolder<Buffer> buf = new Buffer(20); | |
| 575 | + auto buf = make_pointer_holder<Buffer>(20U); | |
| 576 | 576 | unsigned char* bp = buf->getBuffer(); |
| 577 | 577 | memcpy(bp, "data for new stream\n", 20); // no null! |
| 578 | 578 | QPDFObjectHandle qstream = QPDFObjectHandle::newStream( |
| ... | ... | @@ -1100,9 +1100,9 @@ static void test_27(QPDF& pdf, char const* arg2) |
| 1100 | 1100 | pl.write(QUtil::unsigned_char_pointer("new data for stream\n"), |
| 1101 | 1101 | 20); // no null! |
| 1102 | 1102 | pl.finish(); |
| 1103 | - PointerHolder<Buffer> b = pl.getBuffer(); | |
| 1103 | + auto b = pl.getBufferSharedPointer(); | |
| 1104 | 1104 | Provider* provider = new Provider(b); |
| 1105 | - p1 = provider; | |
| 1105 | + p1 = decltype(p1)(provider); | |
| 1106 | 1106 | } |
| 1107 | 1107 | // Create a stream that uses a provider in empty1 and copy it |
| 1108 | 1108 | // to empty2. It is copied from empty2 to the final pdf. |
| ... | ... | @@ -1129,9 +1129,9 @@ static void test_27(QPDF& pdf, char const* arg2) |
| 1129 | 1129 | "more data for stream\n"), |
| 1130 | 1130 | 21); // no null! |
| 1131 | 1131 | pl.finish(); |
| 1132 | - PointerHolder<Buffer> b = pl.getBuffer(); | |
| 1132 | + auto b = pl.getBufferSharedPointer(); | |
| 1133 | 1133 | Provider* provider = new Provider(b); |
| 1134 | - p2 = provider; | |
| 1134 | + p2 = decltype(p2)(provider); | |
| 1135 | 1135 | } |
| 1136 | 1136 | QPDF empty3; |
| 1137 | 1137 | empty3.emptyPDF(); |
| ... | ... | @@ -1315,7 +1315,7 @@ static void test_33(QPDF& pdf, char const* arg2) |
| 1315 | 1315 | w.setStaticID(true); |
| 1316 | 1316 | w.setOutputPipeline(&p); |
| 1317 | 1317 | w.write(); |
| 1318 | - PointerHolder<Buffer> b = p.getBuffer(); | |
| 1318 | + auto b = p.getBufferSharedPointer(); | |
| 1319 | 1319 | FILE* f = QUtil::safe_fopen("a.pdf", "wb"); |
| 1320 | 1320 | fwrite(b->getBuffer(), b->getSize(), 1, f); |
| 1321 | 1321 | fclose(f); |
| ... | ... | @@ -1414,7 +1414,7 @@ static void test_36(QPDF& pdf, char const* arg2) |
| 1414 | 1414 | Pl_Buffer p1("buffer"); |
| 1415 | 1415 | Pl_Flate p2("compress", &p1, Pl_Flate::a_inflate); |
| 1416 | 1416 | stream.pipeStreamData(&p2, 0, qpdf_dl_none); |
| 1417 | - PointerHolder<Buffer> buf = p1.getBuffer(); | |
| 1417 | + auto buf = p1.getBufferSharedPointer(); | |
| 1418 | 1418 | std::string data = std::string( |
| 1419 | 1419 | reinterpret_cast<char const*>(buf->getBuffer()), |
| 1420 | 1420 | buf->getSize()); |
| ... | ... | @@ -1497,7 +1497,8 @@ static void test_41(QPDF& pdf, char const* arg2) |
| 1497 | 1497 | pages.begin(); |
| 1498 | 1498 | iter != pages.end(); ++iter) |
| 1499 | 1499 | { |
| 1500 | - (*iter).addContentTokenFilter(new TokenFilter); | |
| 1500 | + (*iter).addContentTokenFilter( | |
| 1501 | + PointerHolder<QPDFObjectHandle::TokenFilter>(new TokenFilter())); | |
| 1501 | 1502 | } |
| 1502 | 1503 | QPDFWriter w(pdf, "a.pdf"); |
| 1503 | 1504 | w.setQDFMode(true); |
| ... | ... | @@ -2727,11 +2728,15 @@ static void test_72(QPDF& pdf, char const* arg2) |
| 2727 | 2728 | Pl_Buffer b("buffer"); |
| 2728 | 2729 | if (i == 0) |
| 2729 | 2730 | { |
| 2730 | - fx1.addContentTokenFilter(new TokenFilter); | |
| 2731 | + fx1.addContentTokenFilter( | |
| 2732 | + PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 2733 | + new TokenFilter())); | |
| 2731 | 2734 | } |
| 2732 | 2735 | else |
| 2733 | 2736 | { |
| 2734 | - fx1.getObjectHandle().addTokenFilter(new TokenFilter); | |
| 2737 | + fx1.getObjectHandle().addTokenFilter( | |
| 2738 | + PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 2739 | + new TokenFilter())); | |
| 2735 | 2740 | } |
| 2736 | 2741 | fx1.pipeContents(&b); |
| 2737 | 2742 | std::unique_ptr<Buffer> buf(b.getBuffer()); |
| ... | ... | @@ -2890,7 +2895,7 @@ static void test_76(QPDF& pdf, char const* arg2) |
| 2890 | 2895 | p.write(QUtil::unsigned_char_pointer("from buffer"), 11); |
| 2891 | 2896 | p.finish(); |
| 2892 | 2897 | auto efs3 = QPDFEFStreamObjectHelper::createEFStream( |
| 2893 | - pdf, p.getBuffer()); | |
| 2898 | + pdf, p.getBufferSharedPointer()); | |
| 2894 | 2899 | efs3.setSubtype("text/plain"); |
| 2895 | 2900 | efdh.replaceEmbeddedFile( |
| 2896 | 2901 | "att2", QPDFFileSpecObjectHelper::createFileSpec( |
| ... | ... | @@ -3007,7 +3012,7 @@ static void test_79(QPDF& pdf, char const* arg2) |
| 3007 | 3012 | Pl_Buffer b("buffer"); |
| 3008 | 3013 | b.write(QUtil::unsigned_char_pointer("from buffer"), 11); |
| 3009 | 3014 | b.finish(); |
| 3010 | - PointerHolder<Buffer> bp = b.getBuffer(); | |
| 3015 | + auto bp = b.getBufferSharedPointer(); | |
| 3011 | 3016 | auto s3 = QPDFObjectHandle::newStream(&pdf, bp); |
| 3012 | 3017 | |
| 3013 | 3018 | std::vector<QPDFObjectHandle> streams = {s1, s2, s3}; | ... | ... |
qpdf/test_renumber.cc
| ... | ... | @@ -300,7 +300,7 @@ int main(int argc, char *argv[]) |
| 300 | 300 | |
| 301 | 301 | std::map<QPDFObjGen, QPDFXRefEntry> xrefs_w |
| 302 | 302 | = w.getWrittenXRefTable(); |
| 303 | - PointerHolder<Buffer> buf = w.getBuffer(); | |
| 303 | + auto buf = w.getBufferSharedPointer(); | |
| 304 | 304 | |
| 305 | 305 | QPDF qpdf_ren; |
| 306 | 306 | qpdf_ren.processMemoryFile("renumbered", | ... | ... |
qpdf/test_tokenizer.cc
| ... | ... | @@ -205,7 +205,7 @@ static void process(char const* filename, bool include_ignorable, |
| 205 | 205 | // Tokenize file, skipping streams |
| 206 | 206 | FileInputSource* fis = new FileInputSource(); |
| 207 | 207 | fis->setFilename(filename); |
| 208 | - is = fis; | |
| 208 | + is = PointerHolder<InputSource>(fis); | |
| 209 | 209 | dump_tokens(is, "FILE", max_len, include_ignorable, true, false); |
| 210 | 210 | |
| 211 | 211 | // Tokenize content streams, skipping inline images |
| ... | ... | @@ -220,10 +220,10 @@ static void process(char const* filename, bool include_ignorable, |
| 220 | 220 | ++pageno; |
| 221 | 221 | Pl_Buffer plb("buffer"); |
| 222 | 222 | (*iter).pipeContents(&plb); |
| 223 | - PointerHolder<Buffer> content_data = plb.getBuffer(); | |
| 223 | + auto content_data = plb.getBufferSharedPointer(); | |
| 224 | 224 | BufferInputSource* bis = new BufferInputSource( |
| 225 | 225 | "content data", content_data.get()); |
| 226 | - is = bis; | |
| 226 | + is = PointerHolder<InputSource>(bis); | |
| 227 | 227 | dump_tokens(is, "PAGE " + QUtil::int_to_string(pageno), |
| 228 | 228 | max_len, include_ignorable, false, true); |
| 229 | 229 | } |
| ... | ... | @@ -241,7 +241,7 @@ static void process(char const* filename, bool include_ignorable, |
| 241 | 241 | (*iter).getStreamData(qpdf_dl_specialized); |
| 242 | 242 | BufferInputSource* bis = new BufferInputSource( |
| 243 | 243 | "object stream data", b.get()); |
| 244 | - is = bis; | |
| 244 | + is = PointerHolder<InputSource>(bis); | |
| 245 | 245 | dump_tokens(is, "OBJECT STREAM " + |
| 246 | 246 | QUtil::int_to_string((*iter).getObjectID()), |
| 247 | 247 | max_len, include_ignorable, false, false); | ... | ... |
zlib-flate/zlib-flate.cc
| ... | ... | @@ -75,9 +75,8 @@ int main(int argc, char* argv[]) |
| 75 | 75 | |
| 76 | 76 | QUtil::binary_stdout(); |
| 77 | 77 | QUtil::binary_stdin(); |
| 78 | - PointerHolder<Pl_StdioFile> out = new Pl_StdioFile("stdout", stdout); | |
| 79 | - PointerHolder<Pl_Flate> flate = | |
| 80 | - new Pl_Flate("flate", out.get(), action); | |
| 78 | + auto out = make_pointer_holder<Pl_StdioFile>("stdout", stdout); | |
| 79 | + auto flate = make_pointer_holder<Pl_Flate>("flate", out.get(), action); | |
| 81 | 80 | bool warn = false; |
| 82 | 81 | flate->setWarnCallback([&warn](char const* msg, int code) { |
| 83 | 82 | warn = true; | ... | ... |