Commit c5f61fcbd33cc41a7741ccb300a7da28f19eab59

Authored by Jay Berkenbilt
1 parent 31b2cfbb

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.
Showing 1 changed file with 3 additions and 4 deletions
include/qpdf/QPDF.hh
... ... @@ -1063,18 +1063,17 @@ class QPDF
1063 1063 public:
1064 1064 ResolveRecorder(QPDF* qpdf, QPDFObjGen const& og) :
1065 1065 qpdf(qpdf),
1066   - og(og)
  1066 + iter(qpdf->m->resolving.insert(og).first)
1067 1067 {
1068   - qpdf->m->resolving.insert(og);
1069 1068 }
1070 1069 virtual ~ResolveRecorder()
1071 1070 {
1072   - this->qpdf->m->resolving.erase(og);
  1071 + this->qpdf->m->resolving.erase(iter);
1073 1072 }
1074 1073  
1075 1074 private:
1076 1075 QPDF* qpdf;
1077   - QPDFObjGen og;
  1076 + std::set<QPDFObjGen>::const_iterator iter;
1078 1077 };
1079 1078 friend class ResolveRecorder;
1080 1079  
... ...