diff --git a/include/qpdf/QPDFObject.hh b/include/qpdf/QPDFObject.hh index 6801cd5b..e6d1d18b 100644 --- a/include/qpdf/QPDFObject.hh +++ b/include/qpdf/QPDFObject.hh @@ -103,6 +103,12 @@ class QPDFObject { return value->qpdf; } + QPDFObjGen + getObjGen() const + { + return value->og; + } + void setDescription(QPDF* qpdf, std::string const& description) { diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index d23d0fd4..399d1b01 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -1584,7 +1584,6 @@ class QPDFObjectHandle QPDF* qpdf, QPDFObjGen const& og, std::shared_ptr const& obj) : - og(og), obj(obj) { } @@ -1640,7 +1639,6 @@ class QPDFObjectHandle // Moving members of QPDFObjectHandle into a smart pointer incurs // a substantial performance penalty since QPDFObjectHandle // objects are copied around so frequently. - QPDFObjGen og; std::shared_ptr obj; }; @@ -1864,19 +1862,19 @@ class QPDFObjectHandle::QPDFArrayItems inline QPDFObjGen QPDFObjectHandle::getObjGen() const { - return og; + return isInitialized() ? obj->getObjGen() : QPDFObjGen(); } inline int QPDFObjectHandle::getObjectID() const { - return og.getObj(); + return getObjGen().getObj(); } inline int QPDFObjectHandle::getGeneration() const { - return og.getGen(); + return getObjGen().getGen(); } inline bool diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 2c93dcbf..7a614bbf 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -2282,8 +2282,6 @@ QPDFObjectHandle::copyObject( " reserved object handle direct"); } - og = QPDFObjGen(); - std::shared_ptr new_obj; if (isBool() || isInteger() || isName() || isNull() || isReal() ||