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