aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/qpdf/QPDF.hh1
-rw-r--r--libqpdf/QPDF.cc12
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);
}