diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-09-01 23:51:10 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-09-02 00:19:47 +0200 |
commit | 6d62662e2d04ce9134a432d49accb2dcac6b79fa (patch) | |
tree | ce4e74d111ea9066ca51892f30265d346743734f | |
parent | c510c01568ba453d5c518cce8092e242a442e5ce (diff) | |
download | qpdf-6d62662e2d04ce9134a432d49accb2dcac6b79fa.tar.zst |
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.
-rw-r--r-- | libqpdf/QPDF.cc | 2 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 8 | ||||
-rw-r--r-- | libqpdf/qpdf/QPDFObject.hh | 21 |
3 files changed, 6 insertions, 25 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 98ad2267..e3da2e64 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -259,7 +259,7 @@ QPDF::~QPDF() // made to any of the objects. this->m->xref_table.clear(); for (auto const& iter: this->m->obj_cache) { - QPDFObject::ObjAccessor::releaseResolved(iter.second.object.get()); + iter.second.object->releaseResolved(); iter.second.object->resetObjGen(); } } diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index a1019955..83369b54 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -243,12 +243,12 @@ QPDFObjectHandle::releaseResolved() // Do not cross over indirect object boundaries to avoid an // infinite loop. This method may only be called during final // destruction. See comments in QPDF::~QPDF(). - if (isIndirect()) { - if (this->obj.get()) { + if (this->obj.get()) { + if (isIndirect()) { this->obj = nullptr; + } else { + this->obj->releaseResolved(); } - } else { - QPDFObject::ObjAccessor::releaseResolved(this->obj.get()); } } diff --git a/libqpdf/qpdf/QPDFObject.hh b/libqpdf/qpdf/QPDFObject.hh index 715af99d..d0006ec9 100644 --- a/libqpdf/qpdf/QPDFObject.hh +++ b/libqpdf/qpdf/QPDFObject.hh @@ -138,26 +138,7 @@ class QPDFObject return dynamic_cast<T*>(value.get()); } - // Accessor to give specific access to non-public methods - class ObjAccessor - { - friend class QPDF; - friend class QPDFObjectHandle; - - private: - static void - releaseResolved(QPDFObject* o) - { - if (o) { - o->releaseResolved(); - } - } - }; - - friend class ObjAccessor; - - protected: - virtual void + void releaseResolved() { value->releaseResolved(); |