aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-03-17 11:41:12 +0100
committerm-holger <m-holger@kubitscheck.org>2023-03-17 12:19:48 +0100
commitb7791566f6645c621eec15f2cf1a8a8eec265f36 (patch)
tree8f351967ad27bd944922db9adf43e0b8088cba29 /libqpdf
parentb27be3ed27890ae8226560817f14c117927cee55 (diff)
downloadqpdf-b7791566f6645c621eec15f2cf1a8a8eec265f36.tar.zst
Add new data member QPDFWriter::Members::root_og
Also, uninitialize QPDFWriter::Members members.
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFWriter.cc58
1 files changed, 7 insertions, 51 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc
index 907cc105..8287412c 100644
--- a/libqpdf/QPDFWriter.cc
+++ b/libqpdf/QPDFWriter.cc
@@ -52,50 +52,9 @@ QPDFWriter::FunctionProgressReporter::reportProgress(int progress)
QPDFWriter::Members::Members(QPDF& pdf) :
pdf(pdf),
- filename("unspecified"),
- file(nullptr),
- close_file(false),
- buffer_pipeline(nullptr),
- output_buffer(nullptr),
- normalize_content_set(false),
- normalize_content(false),
- compress_streams(true),
- compress_streams_set(false),
- stream_decode_level(qpdf_dl_none),
- stream_decode_level_set(false),
- recompress_flate(false),
- qdf_mode(false),
- preserve_unreferenced_objects(false),
- newline_before_endstream(false),
- static_id(false),
- suppress_original_object_ids(false),
- direct_stream_lengths(true),
- encrypted(false),
- preserve_encryption(true),
- linearized(false),
- pclm(false),
- object_stream_mode(qpdf_o_preserve),
- encrypt_metadata(true),
- encrypt_use_aes(false),
- encryption_V(0),
- encryption_R(0),
- final_extension_level(0),
- min_extension_level(0),
- forced_extension_level(0),
- encryption_dict_objid(0),
- pipeline(nullptr),
- next_objid(1),
- cur_stream_length_id(0),
- cur_stream_length(0),
- added_newline(false),
- max_ostream_index(0),
- next_stack_id(0),
- deterministic_id(false),
- md5_pipeline(nullptr),
- did_write_setup(false),
- events_expected(0),
- events_seen(0),
- next_progress_report(0)
+ root_og(
+ pdf.getRoot().getObjGen().isIndirect() ? pdf.getRoot().getObjGen()
+ : QPDFObjGen(-1, 0))
{
}
@@ -1534,14 +1493,12 @@ QPDFWriter::unparseObject(
// is direct through the ADBE dictionary, so we can modify in
// place.
- bool is_root = false;
+ const bool is_root = (old_og == m->root_og);
bool have_extensions_other = false;
bool have_extensions_adbe = false;
QPDFObjectHandle extensions;
- if ((old_og.getObj() != 0) &&
- (old_og == this->m->pdf.getRoot().getObjGen())) {
- is_root = true;
+ if (is_root) {
if (object.hasKey("/Extensions") &&
object.getKey("/Extensions").isDictionary()) {
extensions = object.getKey("/Extensions");
@@ -2396,10 +2353,9 @@ QPDFWriter::doWriteSetup()
// 8.0.0 has a bug that prevents it from being able to handle
// encrypted files with compressed document catalogs, so we
// disable them in that case as well.
- QPDFObjGen og = this->m->pdf.getRoot().getObjGen();
- if (this->m->object_to_object_stream.count(og)) {
+ if (m->object_to_object_stream.count(m->root_og)) {
QTC::TC("qpdf", "QPDFWriter uncompressing root");
- this->m->object_to_object_stream.erase(og);
+ this->m->object_to_object_stream.erase(m->root_og);
}
}