From 6d62662e2d04ce9134a432d49accb2dcac6b79fa Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 1 Sep 2022 17:51:10 -0400 Subject: 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 | 2 +- libqpdf/QPDFObjectHandle.cc | 8 ++++---- libqpdf/qpdf/QPDFObject.hh | 21 +-------------------- 3 files changed, 6 insertions(+), 25 deletions(-) (limited to 'libqpdf') 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(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(); -- cgit v1.2.3-54-g00ecf