Commit 07b66eb0b688072d408c8eb51eaa1025c4ca4d7d

Authored by m-holger
1 parent 7248cab7

Remove QPDFObjectHandle::reserved

include/qpdf/QPDFObjectHandle.hh
@@ -1609,7 +1609,6 @@ class QPDFObjectHandle @@ -1609,7 +1609,6 @@ class QPDFObjectHandle
1609 QPDF* qpdf; 1609 QPDF* qpdf;
1610 QPDFObjGen og; 1610 QPDFObjGen og;
1611 std::shared_ptr<QPDFObject> obj; 1611 std::shared_ptr<QPDFObject> obj;
1612 - bool reserved;  
1613 }; 1612 };
1614 1613
1615 #ifndef QPDF_NO_QPDF_STRING 1614 #ifndef QPDF_NO_QPDF_STRING
libqpdf/QPDFObjectHandle.cc
@@ -236,24 +236,21 @@ LastChar::getLastChar() @@ -236,24 +236,21 @@ LastChar::getLastChar()
236 236
237 QPDFObjectHandle::QPDFObjectHandle() : 237 QPDFObjectHandle::QPDFObjectHandle() :
238 initialized(false), 238 initialized(false),
239 - qpdf(nullptr),  
240 - reserved(false) 239 + qpdf(nullptr)
241 { 240 {
242 } 241 }
243 242
244 QPDFObjectHandle::QPDFObjectHandle(QPDF* qpdf, QPDFObjGen const& og) : 243 QPDFObjectHandle::QPDFObjectHandle(QPDF* qpdf, QPDFObjGen const& og) :
245 initialized(true), 244 initialized(true),
246 qpdf(qpdf), 245 qpdf(qpdf),
247 - og(og),  
248 - reserved(false) 246 + og(og)
249 { 247 {
250 } 248 }
251 249
252 QPDFObjectHandle::QPDFObjectHandle(std::shared_ptr<QPDFObject> const& data) : 250 QPDFObjectHandle::QPDFObjectHandle(std::shared_ptr<QPDFObject> const& data) :
253 initialized(true), 251 initialized(true),
254 qpdf(nullptr), 252 qpdf(nullptr),
255 - obj(data),  
256 - reserved(false) 253 + obj(data)
257 { 254 {
258 } 255 }
259 256
@@ -412,7 +409,7 @@ bool @@ -412,7 +409,7 @@ bool
412 QPDFObjectHandle::isReserved() 409 QPDFObjectHandle::isReserved()
413 { 410 {
414 // dereference will clear reserved if this has been replaced 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 bool 415 bool
@@ -1648,7 +1645,7 @@ QPDFObjectHandle::unparseResolved() @@ -1648,7 +1645,7 @@ QPDFObjectHandle::unparseResolved()
1648 if (!dereference()) { 1645 if (!dereference()) {
1649 throw std::logic_error( 1646 throw std::logic_error(
1650 "attempted to dereference an uninitialized QPDFObjectHandle"); 1647 "attempted to dereference an uninitialized QPDFObjectHandle");
1651 - } else if (this->reserved) { 1648 + } else if (isReserved()) {
1652 throw std::logic_error( 1649 throw std::logic_error(
1653 "QPDFObjectHandle: attempting to unparse a reserved object"); 1650 "QPDFObjectHandle: attempting to unparse a reserved object");
1654 } 1651 }
@@ -1680,7 +1677,7 @@ QPDFObjectHandle::getJSON(int json_version, bool dereference_indirect) @@ -1680,7 +1677,7 @@ QPDFObjectHandle::getJSON(int json_version, bool dereference_indirect)
1680 } else if (!dereference()) { 1677 } else if (!dereference()) {
1681 throw std::logic_error( 1678 throw std::logic_error(
1682 "attempted to dereference an uninitialized QPDFObjectHandle"); 1679 "attempted to dereference an uninitialized QPDFObjectHandle");
1683 - } else if (this->reserved) { 1680 + } else if (isReserved()) {
1684 throw std::logic_error( 1681 throw std::logic_error(
1685 "QPDFObjectHandle: attempting to unparse a reserved object"); 1682 "QPDFObjectHandle: attempting to unparse a reserved object");
1686 } else { 1683 } else {
@@ -2159,7 +2156,6 @@ QPDFObjectHandle::newReserved(QPDF* qpdf) @@ -2159,7 +2156,6 @@ QPDFObjectHandle::newReserved(QPDF* qpdf)
2159 // number, but then return an unresolved handle to the object. 2156 // number, but then return an unresolved handle to the object.
2160 QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved()); 2157 QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved());
2161 QPDFObjectHandle result = newIndirect(qpdf, reserved.getObjGen()); 2158 QPDFObjectHandle result = newIndirect(qpdf, reserved.getObjGen());
2162 - result.reserved = true;  
2163 return result; 2159 return result;
2164 } 2160 }
2165 2161
@@ -2567,24 +2563,10 @@ QPDFObjectHandle::dereference() @@ -2567,24 +2563,10 @@ QPDFObjectHandle::dereference()
2567 if (!this->initialized) { 2563 if (!this->initialized) {
2568 return false; 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 return true; 2571 return true;
2590 } 2572 }