aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-09-13 17:19:24 +0200
committerJay Berkenbilt <ejb@ql.org>2022-09-13 17:19:24 +0200
commitc5f61fcbd33cc41a7741ccb300a7da28f19eab59 (patch)
tree1486e679385bbb34fb8a7b080d2968eea50f437b
parent31b2cfbb79e0222f666ce3eaec740ed7f225c4a9 (diff)
downloadqpdf-c5f61fcbd33cc41a7741ccb300a7da28f19eab59.tar.zst
Improve efficiency of ResolveRecorder
Removing an element from a set with iterator is constant time, and std::set specifies that other operations on the set do not invalidate existing iterators.
-rw-r--r--include/qpdf/QPDF.hh7
1 files changed, 3 insertions, 4 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh
index 1e3d4c34..8a861714 100644
--- a/include/qpdf/QPDF.hh
+++ b/include/qpdf/QPDF.hh
@@ -1063,18 +1063,17 @@ class QPDF
public:
ResolveRecorder(QPDF* qpdf, QPDFObjGen const& og) :
qpdf(qpdf),
- og(og)
+ iter(qpdf->m->resolving.insert(og).first)
{
- qpdf->m->resolving.insert(og);
}
virtual ~ResolveRecorder()
{
- this->qpdf->m->resolving.erase(og);
+ this->qpdf->m->resolving.erase(iter);
}
private:
QPDF* qpdf;
- QPDFObjGen og;
+ std::set<QPDFObjGen>::const_iterator iter;
};
friend class ResolveRecorder;