diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-09-13 17:19:24 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-09-13 17:19:24 +0200 |
commit | c5f61fcbd33cc41a7741ccb300a7da28f19eab59 (patch) | |
tree | 1486e679385bbb34fb8a7b080d2968eea50f437b | |
parent | 31b2cfbb79e0222f666ce3eaec740ed7f225c4a9 (diff) | |
download | qpdf-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.hh | 7 |
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; |