aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-09-01 23:51:10 +0200
committerJay Berkenbilt <ejb@ql.org>2022-09-02 00:19:47 +0200
commit6d62662e2d04ce9134a432d49accb2dcac6b79fa (patch)
treece4e74d111ea9066ca51892f30265d346743734f
parentc510c01568ba453d5c518cce8092e242a442e5ce (diff)
downloadqpdf-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.cc2
-rw-r--r--libqpdf/QPDFObjectHandle.cc8
-rw-r--r--libqpdf/qpdf/QPDFObject.hh21
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();