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