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