diff --git a/ChangeLog b/ChangeLog index 655b4b13..42e80fe1 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 83349b48..23beee32 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);