diff options
-rw-r--r-- | include/qpdf/QPDF.hh | 1 | ||||
-rw-r--r-- | libqpdf/QPDF.cc | 12 |
2 files changed, 10 insertions, 3 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh index 54630a62..f3160bf9 100644 --- a/include/qpdf/QPDF.hh +++ b/include/qpdf/QPDF.hh @@ -1185,6 +1185,7 @@ class QPDF void stopOnError(std::string const& message); QPDFObjectHandle reserveObjectIfNotExists(QPDFObjGen const& og); QPDFObjectHandle reserveStream(QPDFObjGen const& og); + QPDFObjGen nextObjGen(); QPDFObjectHandle newIndirect(QPDFObjGen const&, std::shared_ptr<QPDFObject> const&); QPDFObjectHandle makeIndirectObject(std::shared_ptr<QPDFObject> const& obj); diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index a870d783..50e08804 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -1976,15 +1976,21 @@ QPDF::isUnresolved(QPDFObjGen const& og) return !isCached(og) || m->obj_cache[og].object->isUnresolved(); } -QPDFObjectHandle -QPDF::makeIndirectObject(std::shared_ptr<QPDFObject> const& obj) +QPDFObjGen +QPDF::nextObjGen() { int max_objid = toI(getObjectCount()); if (max_objid == std::numeric_limits<int>::max()) { throw std::range_error( "max object id is too high to create new objects"); } - QPDFObjGen next(max_objid + 1, 0); + return QPDFObjGen(max_objid + 1, 0); +} + +QPDFObjectHandle +QPDF::makeIndirectObject(std::shared_ptr<QPDFObject> const& obj) +{ + QPDFObjGen next{nextObjGen()}; m->obj_cache[next] = ObjCache(obj, -1, -1); return newIndirect(next, m->obj_cache[next].object); } |