diff options
author | m-holger <m-holger@kubitscheck.org> | 2022-08-02 17:39:57 +0200 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2022-08-31 23:46:25 +0200 |
commit | 07b66eb0b688072d408c8eb51eaa1025c4ca4d7d (patch) | |
tree | b5743f259abad8f0d5f79d9d44c1f16ac03bf7a3 | |
parent | 7248cab71b69efe1e5efa3f1400d4d3970271a77 (diff) | |
download | qpdf-07b66eb0b688072d408c8eb51eaa1025c4ca4d7d.tar.zst |
Remove QPDFObjectHandle::reserved
-rw-r--r-- | include/qpdf/QPDFObjectHandle.hh | 1 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 38 |
2 files changed, 10 insertions, 29 deletions
diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index c1bed81f..eeccebf2 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -1609,7 +1609,6 @@ class QPDFObjectHandle QPDF* qpdf; QPDFObjGen og; std::shared_ptr<QPDFObject> obj; - bool reserved; }; #ifndef QPDF_NO_QPDF_STRING diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 2227a77b..5874186e 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -236,24 +236,21 @@ LastChar::getLastChar() QPDFObjectHandle::QPDFObjectHandle() : initialized(false), - qpdf(nullptr), - reserved(false) + qpdf(nullptr) { } QPDFObjectHandle::QPDFObjectHandle(QPDF* qpdf, QPDFObjGen const& og) : initialized(true), qpdf(qpdf), - og(og), - reserved(false) + og(og) { } QPDFObjectHandle::QPDFObjectHandle(std::shared_ptr<QPDFObject> const& data) : initialized(true), qpdf(nullptr), - obj(data), - reserved(false) + obj(data) { } @@ -412,7 +409,7 @@ bool QPDFObjectHandle::isReserved() { // dereference will clear reserved if this has been replaced - return dereference() && this->reserved; + return dereference() && QPDFObjectTypeAccessor<QPDF_Reserved>::check(obj); } bool @@ -1648,7 +1645,7 @@ QPDFObjectHandle::unparseResolved() if (!dereference()) { throw std::logic_error( "attempted to dereference an uninitialized QPDFObjectHandle"); - } else if (this->reserved) { + } else if (isReserved()) { throw std::logic_error( "QPDFObjectHandle: attempting to unparse a reserved object"); } @@ -1680,7 +1677,7 @@ QPDFObjectHandle::getJSON(int json_version, bool dereference_indirect) } else if (!dereference()) { throw std::logic_error( "attempted to dereference an uninitialized QPDFObjectHandle"); - } else if (this->reserved) { + } else if (isReserved()) { throw std::logic_error( "QPDFObjectHandle: attempting to unparse a reserved object"); } else { @@ -2159,7 +2156,6 @@ QPDFObjectHandle::newReserved(QPDF* qpdf) // number, but then return an unresolved handle to the object. QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved()); QPDFObjectHandle result = newIndirect(qpdf, reserved.getObjGen()); - result.reserved = true; return result; } @@ -2567,24 +2563,10 @@ QPDFObjectHandle::dereference() if (!this->initialized) { return false; } - if (this->obj.get() && getObjectID() && - QPDF::Resolver::objectChanged(this->qpdf, getObjGen(), this->obj)) { - this->obj = nullptr; - } - if (this->obj == nullptr) { - std::shared_ptr<QPDFObject> obj = - QPDF::Resolver::resolve(this->qpdf, getObjGen()); - if (obj == nullptr) { - // QPDF::resolve never returns an uninitialized object, but - // check just in case. - this->obj = QPDF_Null::create(); - } else if (dynamic_cast<QPDF_Reserved*>(obj.get())) { - // Do not resolve - this->reserved = true; - } else { - this->reserved = false; - this->obj = obj; - } + if (this->obj() == nullptr || + (getObjectID() && + QPDF::Resolver::objectChanged(this->qpdf, getObjGen(), this->obj))) { + obj = QPDF::Resolver::resolve(this->qpdf, getObjGen()); } return true; } |