Commit 3cacb27a90cf332e7e978e925bb615c17f567ee3

Authored by Jay Berkenbilt
1 parent bddebdb0

Performance fix on preserveObjectStreams

ChangeLog
  1 +2021-05-09 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Improve performance of preservation of object streams by
  4 + avoiding unnecessary traversal of objects when there are no object
  5 + streams.
  6 +
1 7 2021-05-08 Jay Berkenbilt <ejb@ql.org>
2 8  
3 9 * 10.3.2: release
... ...
libqpdf/QPDFWriter.cc
... ... @@ -2361,6 +2361,12 @@ QPDFWriter::initializeSpecialStreams()
2361 2361 void
2362 2362 QPDFWriter::preserveObjectStreams()
2363 2363 {
  2364 + std::map<int, int> omap;
  2365 + QPDF::Writer::getObjectStreamData(this->m->pdf, omap);
  2366 + if (omap.empty())
  2367 + {
  2368 + return;
  2369 + }
2364 2370 // Our object_to_object_stream map has to map ObjGen -> ObjGen
2365 2371 // since we may be generating object streams out of old objects
2366 2372 // that have generation numbers greater than zero. However in an
... ... @@ -2380,8 +2386,6 @@ QPDFWriter::preserveObjectStreams()
2380 2386 }
2381 2387 QTC::TC("qpdf", "QPDFWriter preserve object streams",
2382 2388 this->m->preserve_unreferenced_objects ? 0 : 1);
2383   - std::map<int, int> omap;
2384   - QPDF::Writer::getObjectStreamData(this->m->pdf, omap);
2385 2389 for (auto iter: omap)
2386 2390 {
2387 2391 QPDFObjGen og(iter.first, 0);
... ...