Commit 07b66eb0b688072d408c8eb51eaa1025c4ca4d7d
1 parent
7248cab7
Remove QPDFObjectHandle::reserved
Showing
2 changed files
with
10 additions
and
29 deletions
include/qpdf/QPDFObjectHandle.hh
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 | } | ... | ... |