From 3cacb27a90cf332e7e978e925bb615c17f567ee3 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 9 May 2021 07:51:14 -0400 Subject: [PATCH] Performance fix on preserveObjectStreams --- ChangeLog | 6 ++++++ libqpdf/QPDFWriter.cc | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 655b4b1..42e80fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2021-05-09 Jay Berkenbilt + + * Improve performance of preservation of object streams by + avoiding unnecessary traversal of objects when there are no object + streams. + 2021-05-08 Jay Berkenbilt * 10.3.2: release diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 83349b4..23beee3 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -2361,6 +2361,12 @@ QPDFWriter::initializeSpecialStreams() void QPDFWriter::preserveObjectStreams() { + std::map omap; + QPDF::Writer::getObjectStreamData(this->m->pdf, omap); + if (omap.empty()) + { + return; + } // Our object_to_object_stream map has to map ObjGen -> ObjGen // since we may be generating object streams out of old objects // that have generation numbers greater than zero. However in an @@ -2380,8 +2386,6 @@ QPDFWriter::preserveObjectStreams() } QTC::TC("qpdf", "QPDFWriter preserve object streams", this->m->preserve_unreferenced_objects ? 0 : 1); - std::map omap; - QPDF::Writer::getObjectStreamData(this->m->pdf, omap); for (auto iter: omap) { QPDFObjGen og(iter.first, 0); -- libgit2 0.21.4