aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--libqpdf/QPDFWriter.cc8
2 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 655b4b13..42e80fe1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2021-05-09 Jay Berkenbilt <ejb@ql.org>
+
+ * Improve performance of preservation of object streams by
+ avoiding unnecessary traversal of objects when there are no object
+ streams.
+
2021-05-08 Jay Berkenbilt <ejb@ql.org>
* 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<int, int> 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<int, int> omap;
- QPDF::Writer::getObjectStreamData(this->m->pdf, omap);
for (auto iter: omap)
{
QPDFObjGen og(iter.first, 0);