diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 890a6d2..cd7c2b4 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -376,7 +376,7 @@ QPDFObjectHandle QPDF::newStream(std::shared_ptr data) { auto result = newStream(); - result.replaceStreamData(data, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); + result.replaceStreamData(data, {}, {}); return result; } @@ -384,14 +384,14 @@ QPDFObjectHandle QPDF::newStream(std::string const& data) { auto result = newStream(); - result.replaceStreamData(data, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); + result.replaceStreamData(data, {}, {}); return result; } QPDFObjectHandle QPDF::getObject(int objid, int generation) { - return getObject(QPDFObjGen(objid, generation)); + return getObject({objid, generation}); } QPDFObjectHandle diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 0bd46c0..f77b6e3 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -311,9 +311,9 @@ Stream::copy_data_to(Stream& dest) if (qpdf()->doc().config().immediate_copy_from() && !s->stream_data) { // Pull the stream data into a buffer before attempting the copy operation. Do it on the // source stream so that if the source stream is copied multiple times, we don't have to - // keep duplicating the memory. - replaceStreamData( - getRawStreamData(), s->stream_dict["/Filter"], s->stream_dict["/DecodeParms"]); + // keep duplicating the memory. Passing uninitialised object handles will preserve the + // existing filters and decode parameters. + replaceStreamData(getRawStreamData(), {}, {}); } if (s->stream_data) { dest.replaceStreamData(s->stream_data, dict["/Filter"], dict["/DecodeParms"]);