From c5f61fcbd33cc41a7741ccb300a7da28f19eab59 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Tue, 13 Sep 2022 11:19:24 -0400 Subject: 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. --- include/qpdf/QPDF.hh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'include') 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::const_iterator iter; }; friend class ResolveRecorder; -- cgit v1.2.3-54-g00ecf