aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDF.cc26
1 files changed, 10 insertions, 16 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index c0d6ecc6..ece80668 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -2317,8 +2317,7 @@ QPDF::reserveObjects(QPDFObjectHandle foreign, ObjCopier& obj_copier,
if (foreign.isReserved())
{
throw std::logic_error(
- "QPDF: attempting to copy a foreign reserved object: " +
- QUtil::int_to_string(foreign.getObjectID()));
+ "QPDF: attempting to copy a foreign reserved object");
}
if (foreign.isPagesObject())
@@ -2491,16 +2490,6 @@ QPDF::replaceForeignIndirectObjects(
}
PointerHolder<Buffer> stream_buffer =
stream->getStreamDataBuffer();
- // Note: at this stage, dictionary keys may still be reserved.
- // We have to handle that explicitly if we access anything.
- auto get_as_direct = [&old_dict] (std::string const& key) {
- QPDFObjectHandle obj = old_dict.getKey(key);
- obj.makeDirect();
- return obj;
- };
-
- QPDFObjectHandle filter = get_as_direct("/Filter");
- QPDFObjectHandle decode_parms = get_as_direct("/DecodeParms");
if ((foreign_stream_qpdf->m->immediate_copy_from) &&
(stream_buffer.getPointer() == 0))
{
@@ -2510,7 +2499,8 @@ QPDF::replaceForeignIndirectObjects(
// have to keep duplicating the memory.
QTC::TC("qpdf", "QPDF immediate copy stream data");
foreign.replaceStreamData(foreign.getRawStreamData(),
- filter, decode_parms);
+ old_dict.getKey("/Filter"),
+ old_dict.getKey("/DecodeParms"));
stream_buffer = stream->getStreamDataBuffer();
}
PointerHolder<QPDFObjectHandle::StreamDataProvider> stream_provider =
@@ -2518,7 +2508,9 @@ QPDF::replaceForeignIndirectObjects(
if (stream_buffer.getPointer())
{
QTC::TC("qpdf", "QPDF copy foreign stream with buffer");
- result.replaceStreamData(stream_buffer, filter, decode_parms);
+ result.replaceStreamData(stream_buffer,
+ dict.getKey("/Filter"),
+ dict.getKey("/DecodeParms"));
}
else if (stream_provider.getPointer())
{
@@ -2527,7 +2519,8 @@ QPDF::replaceForeignIndirectObjects(
this->m->copied_stream_data_provider->registerForeignStream(
local_og, foreign);
result.replaceStreamData(this->m->copied_streams,
- filter, decode_parms);
+ dict.getKey("/Filter"),
+ dict.getKey("/DecodeParms"));
}
else
{
@@ -2545,7 +2538,8 @@ QPDF::replaceForeignIndirectObjects(
this->m->copied_stream_data_provider->registerForeignStream(
local_og, foreign_stream_data);
result.replaceStreamData(this->m->copied_streams,
- filter, decode_parms);
+ dict.getKey("/Filter"),
+ dict.getKey("/DecodeParms"));
}
}
else