2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-05 20:00:53 +00:00

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.
This commit is contained in:
Jay Berkenbilt 2022-09-01 17:51:10 -04:00
parent c510c01568
commit 6d62662e2d
3 changed files with 6 additions and 25 deletions

View File

@ -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();
}
}

View File

@ -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());
}
}

View File

@ -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();