Commit ca24c235b40b72992c3bd4b26fa83fe40664aeed

Authored by m-holger
Committed by GitHub
2 parents 2336590f 3bce15f5

Merge pull request #1579 from m-holger/streams

Refactor Stream factories
libqpdf/QPDF.cc
@@ -376,7 +376,7 @@ QPDFObjectHandle @@ -376,7 +376,7 @@ QPDFObjectHandle
376 QPDF::newStream(std::shared_ptr<Buffer> data) 376 QPDF::newStream(std::shared_ptr<Buffer> data)
377 { 377 {
378 auto result = newStream(); 378 auto result = newStream();
379 - result.replaceStreamData(data, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); 379 + result.replaceStreamData(data, {}, {});
380 return result; 380 return result;
381 } 381 }
382 382
@@ -384,14 +384,14 @@ QPDFObjectHandle @@ -384,14 +384,14 @@ QPDFObjectHandle
384 QPDF::newStream(std::string const& data) 384 QPDF::newStream(std::string const& data)
385 { 385 {
386 auto result = newStream(); 386 auto result = newStream();
387 - result.replaceStreamData(data, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); 387 + result.replaceStreamData(data, {}, {});
388 return result; 388 return result;
389 } 389 }
390 390
391 QPDFObjectHandle 391 QPDFObjectHandle
392 QPDF::getObject(int objid, int generation) 392 QPDF::getObject(int objid, int generation)
393 { 393 {
394 - return getObject(QPDFObjGen(objid, generation)); 394 + return getObject({objid, generation});
395 } 395 }
396 396
397 QPDFObjectHandle 397 QPDFObjectHandle
libqpdf/QPDF_Stream.cc
@@ -311,9 +311,9 @@ Stream::copy_data_to(Stream&amp; dest) @@ -311,9 +311,9 @@ Stream::copy_data_to(Stream&amp; dest)
311 if (qpdf()->doc().config().immediate_copy_from() && !s->stream_data) { 311 if (qpdf()->doc().config().immediate_copy_from() && !s->stream_data) {
312 // Pull the stream data into a buffer before attempting the copy operation. Do it on the 312 // Pull the stream data into a buffer before attempting the copy operation. Do it on the
313 // source stream so that if the source stream is copied multiple times, we don't have to 313 // source stream so that if the source stream is copied multiple times, we don't have to
314 - // keep duplicating the memory.  
315 - replaceStreamData(  
316 - getRawStreamData(), s->stream_dict["/Filter"], s->stream_dict["/DecodeParms"]); 314 + // keep duplicating the memory. Passing uninitialised object handles will preserve the
  315 + // existing filters and decode parameters.
  316 + replaceStreamData(getRawStreamData(), {}, {});
317 } 317 }
318 if (s->stream_data) { 318 if (s->stream_data) {
319 dest.replaceStreamData(s->stream_data, dict["/Filter"], dict["/DecodeParms"]); 319 dest.replaceStreamData(s->stream_data, dict["/Filter"], dict["/DecodeParms"]);