Commit 6d62662e2d04ce9134a432d49accb2dcac6b79fa
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.
Showing
3 changed files
with
6 additions
and
25 deletions
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(); |