Commit b3d71e1f58aa767dfa8eac3e723ecc164131f306

Authored by m-holger
Committed by Jay Berkenbilt
1 parent 486c273a

Add private overload of QPDF::makeIndirectObject taking a QPDFObject shared_ptr

include/qpdf/QPDF.hh
... ... @@ -1187,6 +1187,7 @@ class QPDF
1187 1187 QPDFObjectHandle reserveStream(QPDFObjGen const& og);
1188 1188 QPDFObjectHandle
1189 1189 newIndirect(QPDFObjGen const&, std::shared_ptr<QPDFObject> const&);
  1190 + QPDFObjectHandle makeIndirectObject(std::shared_ptr<QPDFObject> const& obj);
1190 1191 bool isCached(QPDFObjGen const& og);
1191 1192 bool isUnresolved(QPDFObjGen const& og);
1192 1193 void updateCache(
... ...
libqpdf/QPDF.cc
... ... @@ -1977,7 +1977,7 @@ QPDF::isUnresolved(QPDFObjGen const&amp; og)
1977 1977 }
1978 1978  
1979 1979 QPDFObjectHandle
1980   -QPDF::makeIndirectObject(QPDFObjectHandle oh)
  1980 +QPDF::makeIndirectObject(std::shared_ptr<QPDFObject> const& obj)
1981 1981 {
1982 1982 int max_objid = toI(getObjectCount());
1983 1983 if (max_objid == std::numeric_limits<int>::max()) {
... ... @@ -1985,12 +1985,17 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh)
1985 1985 "max object id is too high to create new objects");
1986 1986 }
1987 1987 QPDFObjGen next(max_objid + 1, 0);
1988   - m->obj_cache[next] =
1989   - ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1);
  1988 + m->obj_cache[next] = ObjCache(obj, -1, -1);
1990 1989 return newIndirect(next, m->obj_cache[next].object);
1991 1990 }
1992 1991  
1993 1992 QPDFObjectHandle
  1993 +QPDF::makeIndirectObject(QPDFObjectHandle oh)
  1994 +{
  1995 + return makeIndirectObject(QPDFObjectHandle::ObjAccessor::getObject(oh));
  1996 +}
  1997 +
  1998 +QPDFObjectHandle
1994 1999 QPDF::reserveObjectIfNotExists(QPDFObjGen const& og)
1995 2000 {
1996 2001 if (!isCached(og) && m->xref_table.count(og) == 0) {
... ...