Commit 07b66eb0b688072d408c8eb51eaa1025c4ca4d7d

Authored by m-holger
1 parent 7248cab7

Remove QPDFObjectHandle::reserved

include/qpdf/QPDFObjectHandle.hh
... ... @@ -1609,7 +1609,6 @@ class QPDFObjectHandle
1609 1609 QPDF* qpdf;
1610 1610 QPDFObjGen og;
1611 1611 std::shared_ptr<QPDFObject> obj;
1612   - bool reserved;
1613 1612 };
1614 1613  
1615 1614 #ifndef QPDF_NO_QPDF_STRING
... ...
libqpdf/QPDFObjectHandle.cc
... ... @@ -236,24 +236,21 @@ LastChar::getLastChar()
236 236  
237 237 QPDFObjectHandle::QPDFObjectHandle() :
238 238 initialized(false),
239   - qpdf(nullptr),
240   - reserved(false)
  239 + qpdf(nullptr)
241 240 {
242 241 }
243 242  
244 243 QPDFObjectHandle::QPDFObjectHandle(QPDF* qpdf, QPDFObjGen const& og) :
245 244 initialized(true),
246 245 qpdf(qpdf),
247   - og(og),
248   - reserved(false)
  246 + og(og)
249 247 {
250 248 }
251 249  
252 250 QPDFObjectHandle::QPDFObjectHandle(std::shared_ptr<QPDFObject> const& data) :
253 251 initialized(true),
254 252 qpdf(nullptr),
255   - obj(data),
256   - reserved(false)
  253 + obj(data)
257 254 {
258 255 }
259 256  
... ... @@ -412,7 +409,7 @@ bool
412 409 QPDFObjectHandle::isReserved()
413 410 {
414 411 // dereference will clear reserved if this has been replaced
415   - return dereference() && this->reserved;
  412 + return dereference() && QPDFObjectTypeAccessor<QPDF_Reserved>::check(obj);
416 413 }
417 414  
418 415 bool
... ... @@ -1648,7 +1645,7 @@ QPDFObjectHandle::unparseResolved()
1648 1645 if (!dereference()) {
1649 1646 throw std::logic_error(
1650 1647 "attempted to dereference an uninitialized QPDFObjectHandle");
1651   - } else if (this->reserved) {
  1648 + } else if (isReserved()) {
1652 1649 throw std::logic_error(
1653 1650 "QPDFObjectHandle: attempting to unparse a reserved object");
1654 1651 }
... ... @@ -1680,7 +1677,7 @@ QPDFObjectHandle::getJSON(int json_version, bool dereference_indirect)
1680 1677 } else if (!dereference()) {
1681 1678 throw std::logic_error(
1682 1679 "attempted to dereference an uninitialized QPDFObjectHandle");
1683   - } else if (this->reserved) {
  1680 + } else if (isReserved()) {
1684 1681 throw std::logic_error(
1685 1682 "QPDFObjectHandle: attempting to unparse a reserved object");
1686 1683 } else {
... ... @@ -2159,7 +2156,6 @@ QPDFObjectHandle::newReserved(QPDF* qpdf)
2159 2156 // number, but then return an unresolved handle to the object.
2160 2157 QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved());
2161 2158 QPDFObjectHandle result = newIndirect(qpdf, reserved.getObjGen());
2162   - result.reserved = true;
2163 2159 return result;
2164 2160 }
2165 2161  
... ... @@ -2567,24 +2563,10 @@ QPDFObjectHandle::dereference()
2567 2563 if (!this->initialized) {
2568 2564 return false;
2569 2565 }
2570   - if (this->obj.get() && getObjectID() &&
2571   - QPDF::Resolver::objectChanged(this->qpdf, getObjGen(), this->obj)) {
2572   - this->obj = nullptr;
2573   - }
2574   - if (this->obj == nullptr) {
2575   - std::shared_ptr<QPDFObject> obj =
2576   - QPDF::Resolver::resolve(this->qpdf, getObjGen());
2577   - if (obj == nullptr) {
2578   - // QPDF::resolve never returns an uninitialized object, but
2579   - // check just in case.
2580   - this->obj = QPDF_Null::create();
2581   - } else if (dynamic_cast<QPDF_Reserved*>(obj.get())) {
2582   - // Do not resolve
2583   - this->reserved = true;
2584   - } else {
2585   - this->reserved = false;
2586   - this->obj = obj;
2587   - }
  2566 + if (this->obj() == nullptr ||
  2567 + (getObjectID() &&
  2568 + QPDF::Resolver::objectChanged(this->qpdf, getObjGen(), this->obj))) {
  2569 + obj = QPDF::Resolver::resolve(this->qpdf, getObjGen());
2588 2570 }
2589 2571 return true;
2590 2572 }
... ...