diff options
author | Jay Berkenbilt <jberkenbilt@users.noreply.github.com> | 2023-05-20 20:09:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-20 20:09:49 +0200 |
commit | a85635b839755765713eb27d767f42b357056b2e (patch) | |
tree | 369b4e49b78e54e04a0409b774a659206017addd /libqpdf/QPDF_optimization.cc | |
parent | fd17c8e3fe38a56abf50ce0edec1cde48d4f74cb (diff) | |
parent | 50bc82b4e035853bd06a9935722d6b5aec902133 (diff) | |
download | qpdf-a85635b839755765713eb27d767f42b357056b2e.tar.zst |
Merge pull request #929 from m-holger/ogguard
Add new convenience class QPDFObjGen::Guard
Diffstat (limited to 'libqpdf/QPDF_optimization.cc')
-rw-r--r-- | libqpdf/QPDF_optimization.cc | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/libqpdf/QPDF_optimization.cc b/libqpdf/QPDF_optimization.cc index 9130287a..85fc59d6 100644 --- a/libqpdf/QPDF_optimization.cc +++ b/libqpdf/QPDF_optimization.cc @@ -284,7 +284,7 @@ QPDF::updateObjectMaps( QPDFObjectHandle oh, std::function<int(QPDFObjectHandle&)> skip_stream_parameters) { - std::set<QPDFObjGen> visited; + QPDFObjGen::set visited; updateObjectMapsInternal(ou, oh, skip_stream_parameters, visited, true); } @@ -293,7 +293,7 @@ QPDF::updateObjectMapsInternal( ObjUser const& ou, QPDFObjectHandle oh, std::function<int(QPDFObjectHandle&)> skip_stream_parameters, - std::set<QPDFObjGen>& visited, + QPDFObjGen::set& visited, bool top) { // Traverse the object tree from this point taking care to avoid @@ -310,13 +310,12 @@ QPDF::updateObjectMapsInternal( if (oh.isIndirect()) { QPDFObjGen og(oh.getObjGen()); - if (visited.count(og)) { + if (!visited.add(og)) { QTC::TC("qpdf", "QPDF opt loop detected"); return; } this->m->obj_user_to_objects[ou].insert(og); this->m->object_to_obj_users[og].insert(ou); - visited.insert(og); } if (oh.isArray()) { |