summaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-12-26 17:51:50 +0100
committerJay Berkenbilt <ejb@ql.org>2013-12-26 17:51:50 +0100
commitc9a9fe9c2f8837bdfdd2b0e58fce9a82b0a64881 (patch)
treefa63cf3a4d687879b4d5796da0676171931d05ea /libqpdf/QPDF.cc
parent0b6127558d94a8b5ea1cdaca2c58e5b5a0cd1472 (diff)
downloadqpdf-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.cc5
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 =