aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjectHandle.cc
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-08-02 17:39:57 +0200
committerm-holger <m-holger@kubitscheck.org>2022-08-31 23:46:25 +0200
commit07b66eb0b688072d408c8eb51eaa1025c4ca4d7d (patch)
treeb5743f259abad8f0d5f79d9d44c1f16ac03bf7a3 /libqpdf/QPDFObjectHandle.cc
parent7248cab71b69efe1e5efa3f1400d4d3970271a77 (diff)
downloadqpdf-07b66eb0b688072d408c8eb51eaa1025c4ca4d7d.tar.zst
Remove QPDFObjectHandle::reserved
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r--libqpdf/QPDFObjectHandle.cc38
1 files changed, 10 insertions, 28 deletions
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;
}