From 63c7eefe9db8d8e87d07198355627af01cc1814d Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Tue, 17 May 2022 18:35:35 -0400 Subject: replaceStreamData: accept uninitialized filter/decode_parms These mean to leave the original values alone. This is needed for reconstructing streams from JSON given that the stream data and stream dictionary may appear in any order in the JSON. --- libqpdf/QPDF_Stream.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'libqpdf') diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index c6f0d873..11dbe7e3 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -725,8 +725,12 @@ QPDF_Stream::replaceFilterData( QPDFObjectHandle const& decode_parms, size_t length) { - this->stream_dict.replaceKey("/Filter", filter); - this->stream_dict.replaceKey("/DecodeParms", decode_parms); + if (filter.isInitialized()) { + this->stream_dict.replaceKey("/Filter", filter); + } + if (decode_parms.isInitialized()) { + this->stream_dict.replaceKey("/DecodeParms", decode_parms); + } if (length == 0) { QTC::TC("qpdf", "QPDF_Stream unknown stream length"); this->stream_dict.removeKey("/Length"); -- cgit v1.2.3-70-g09d2