diff options
author | Jay Berkenbilt <ejb@ql.org> | 2013-12-26 17:51:50 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2013-12-26 17:51:50 +0100 |
commit | c9a9fe9c2f8837bdfdd2b0e58fce9a82b0a64881 (patch) | |
tree | fa63cf3a4d687879b4d5796da0676171931d05ea /libqpdf/QPDF.cc | |
parent | 0b6127558d94a8b5ea1cdaca2c58e5b5a0cd1472 (diff) | |
download | qpdf-c9a9fe9c2f8837bdfdd2b0e58fce9a82b0a64881.tar.zst |
Avoid traversing same object twice when copying objects
This is a performance fix. The output is unchanged.
Fixes #28.
Diffstat (limited to 'libqpdf/QPDF.cc')
-rw-r--r-- | libqpdf/QPDF.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 543b34b7..51f39abd 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -1755,6 +1755,11 @@ QPDF::reserveObjects(QPDFObjectHandle foreign, ObjCopier& obj_copier, QTC::TC("qpdf", "QPDF loop reserving objects"); return; } + if (obj_copier.object_map.find(foreign_og) != obj_copier.object_map.end()) + { + QTC::TC("qpdf", "QPDF already reserved object"); + return; + } QTC::TC("qpdf", "QPDF copy indirect"); obj_copier.visiting.insert(foreign_og); std::map<QPDFObjGen, QPDFObjectHandle>::iterator mapping = |