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,7 +259,7 @@ QPDF::~QPDF()
259 // made to any of the objects. 259 // made to any of the objects.
260 this->m->xref_table.clear(); 260 this->m->xref_table.clear();
261 for (auto const& iter: this->m->obj_cache) { 261 for (auto const& iter: this->m->obj_cache) {
262 - QPDFObject::ObjAccessor::releaseResolved(iter.second.object.get()); 262 + iter.second.object->releaseResolved();
263 iter.second.object->resetObjGen(); 263 iter.second.object->resetObjGen();
264 } 264 }
265 } 265 }
libqpdf/QPDFObjectHandle.cc
@@ -243,12 +243,12 @@ QPDFObjectHandle::releaseResolved() @@ -243,12 +243,12 @@ QPDFObjectHandle::releaseResolved()
243 // Do not cross over indirect object boundaries to avoid an 243 // Do not cross over indirect object boundaries to avoid an
244 // infinite loop. This method may only be called during final 244 // infinite loop. This method may only be called during final
245 // destruction. See comments in QPDF::~QPDF(). 245 // destruction. See comments in QPDF::~QPDF().
246 - if (isIndirect()) {  
247 - if (this->obj.get()) { 246 + if (this->obj.get()) {
  247 + if (isIndirect()) {
248 this->obj = nullptr; 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,26 +138,7 @@ class QPDFObject
138 return dynamic_cast<T*>(value.get()); 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 releaseResolved() 142 releaseResolved()
162 { 143 {
163 value->releaseResolved(); 144 value->releaseResolved();