aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-09-26 19:27:25 +0200
committerJay Berkenbilt <jberkenbilt@users.noreply.github.com>2022-11-19 20:10:42 +0100
commitb3d71e1f58aa767dfa8eac3e723ecc164131f306 (patch)
tree8b9f4743bac361e0846245a609fa3266d4588e20
parent486c273a4fcd2f11353f262bd595ad7fb31158dd (diff)
downloadqpdf-b3d71e1f58aa767dfa8eac3e723ecc164131f306.tar.zst
Add private overload of QPDF::makeIndirectObject taking a QPDFObject shared_ptr
-rw-r--r--include/qpdf/QPDF.hh1
-rw-r--r--libqpdf/QPDF.cc11
2 files changed, 9 insertions, 3 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh
index 3bda477f..54630a62 100644
--- a/include/qpdf/QPDF.hh
+++ b/include/qpdf/QPDF.hh
@@ -1187,6 +1187,7 @@ class QPDF
QPDFObjectHandle reserveStream(QPDFObjGen const& og);
QPDFObjectHandle
newIndirect(QPDFObjGen const&, std::shared_ptr<QPDFObject> const&);
+ QPDFObjectHandle makeIndirectObject(std::shared_ptr<QPDFObject> const& obj);
bool isCached(QPDFObjGen const& og);
bool isUnresolved(QPDFObjGen const& og);
void updateCache(
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 5cad3caf..a870d783 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -1977,7 +1977,7 @@ QPDF::isUnresolved(QPDFObjGen const& og)
}
QPDFObjectHandle
-QPDF::makeIndirectObject(QPDFObjectHandle oh)
+QPDF::makeIndirectObject(std::shared_ptr<QPDFObject> const& obj)
{
int max_objid = toI(getObjectCount());
if (max_objid == std::numeric_limits<int>::max()) {
@@ -1985,12 +1985,17 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh)
"max object id is too high to create new objects");
}
QPDFObjGen next(max_objid + 1, 0);
- m->obj_cache[next] =
- ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1);
+ m->obj_cache[next] = ObjCache(obj, -1, -1);
return newIndirect(next, m->obj_cache[next].object);
}
QPDFObjectHandle
+QPDF::makeIndirectObject(QPDFObjectHandle oh)
+{
+ return makeIndirectObject(QPDFObjectHandle::ObjAccessor::getObject(oh));
+}
+
+QPDFObjectHandle
QPDF::reserveObjectIfNotExists(QPDFObjGen const& og)
{
if (!isCached(og) && m->xref_table.count(og) == 0) {