diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-05-15 19:10:10 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-05-20 13:54:09 +0200 |
commit | 9064542b5f23bde3e7d6826b5b5e8b0a6f356434 (patch) | |
tree | aa7e28b3512f754b14afc3ef3f4454db13c42c22 /libqpdf | |
parent | 7fa5d1773b599df51df21658dff53f5b66fdbba8 (diff) | |
download | qpdf-9064542b5f23bde3e7d6826b5b5e8b0a6f356434.tar.zst |
Add private methods for reserving specific objects
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDF.cc | 11 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 9 |
2 files changed, 18 insertions, 2 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 2658dd26..1807a838 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -2156,6 +2156,17 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh) } QPDFObjectHandle +QPDF::reserveObjectIfNotExists(int objid, int gen) +{ + QPDFObjGen og(objid, gen); + if ((!this->m->obj_cache.count(og)) && (!this->m->xref_table.count(og))) { + resolve(objid, gen); + replaceObject(objid, gen, QPDFObjectHandle::Factory::makeReserved()); + } + return getObjectByID(objid, gen); +} + +QPDFObjectHandle QPDF::getObjectByObjGen(QPDFObjGen const& og) { return getObjectByID(og.getObj(), og.getGen()); diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 4a61f595..4a0a69ae 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -2775,14 +2775,19 @@ QPDFObjectHandle::newReserved(QPDF* qpdf) { // Reserve a spot for this object by assigning it an object // number, but then return an unresolved handle to the object. - QPDFObjectHandle reserved = - qpdf->makeIndirectObject(QPDFObjectHandle(new QPDF_Reserved())); + QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved()); QPDFObjectHandle result = newIndirect(qpdf, reserved.objid, reserved.generation); result.reserved = true; return result; } +QPDFObjectHandle +QPDFObjectHandle::makeReserved() +{ + return QPDFObjectHandle(new QPDF_Reserved()); +} + void QPDFObjectHandle::setObjectDescription( QPDF* owning_qpdf, std::string const& object_description) |