Commit 6d62662e2d04ce9134a432d49accb2dcac6b79fa

Authored by Jay Berkenbilt
1 parent c510c015

Make QPDFObject::releaseResolved public

Now that QPDFObject.hh is out of the public API, we don't really need
QPDFObjAccessor. Also, the function didn't have to be virtual anymore.
libqpdf/QPDF.cc
... ... @@ -259,7 +259,7 @@ QPDF::~QPDF()
259 259 // made to any of the objects.
260 260 this->m->xref_table.clear();
261 261 for (auto const& iter: this->m->obj_cache) {
262   - QPDFObject::ObjAccessor::releaseResolved(iter.second.object.get());
  262 + iter.second.object->releaseResolved();
263 263 iter.second.object->resetObjGen();
264 264 }
265 265 }
... ...
libqpdf/QPDFObjectHandle.cc
... ... @@ -243,12 +243,12 @@ QPDFObjectHandle::releaseResolved()
243 243 // Do not cross over indirect object boundaries to avoid an
244 244 // infinite loop. This method may only be called during final
245 245 // destruction. See comments in QPDF::~QPDF().
246   - if (isIndirect()) {
247   - if (this->obj.get()) {
  246 + if (this->obj.get()) {
  247 + if (isIndirect()) {
248 248 this->obj = nullptr;
  249 + } else {
  250 + this->obj->releaseResolved();
249 251 }
250   - } else {
251   - QPDFObject::ObjAccessor::releaseResolved(this->obj.get());
252 252 }
253 253 }
254 254  
... ...
libqpdf/qpdf/QPDFObject.hh
... ... @@ -138,26 +138,7 @@ class QPDFObject
138 138 return dynamic_cast<T*>(value.get());
139 139 }
140 140  
141   - // Accessor to give specific access to non-public methods
142   - class ObjAccessor
143   - {
144   - friend class QPDF;
145   - friend class QPDFObjectHandle;
146   -
147   - private:
148   - static void
149   - releaseResolved(QPDFObject* o)
150   - {
151   - if (o) {
152   - o->releaseResolved();
153   - }
154   - }
155   - };
156   -
157   - friend class ObjAccessor;
158   -
159   - protected:
160   - virtual void
  141 + void
161 142 releaseResolved()
162 143 {
163 144 value->releaseResolved();
... ...