Commit 8715d6a69389646a1dfd224f618ee6af4e487a1b

Authored by m-holger
1 parent 5641832e

Tweak QPDF::replaceObject

include/qpdf/QPDF.hh
@@ -1038,7 +1038,7 @@ class QPDF @@ -1038,7 +1038,7 @@ class QPDF
1038 QPDFObjectHandle makeIndirectFromQPDFObject(std::shared_ptr<QPDFObject> const& obj); 1038 QPDFObjectHandle makeIndirectFromQPDFObject(std::shared_ptr<QPDFObject> const& obj);
1039 bool isCached(QPDFObjGen const& og); 1039 bool isCached(QPDFObjGen const& og);
1040 bool isUnresolved(QPDFObjGen const& og); 1040 bool isUnresolved(QPDFObjGen const& og);
1041 - void removeObject(QPDFObjGen const& og); 1041 + void removeObject(QPDFObjGen og);
1042 void updateCache( 1042 void updateCache(
1043 QPDFObjGen const& og, 1043 QPDFObjGen const& og,
1044 std::shared_ptr<QPDFObject> const& object, 1044 std::shared_ptr<QPDFObject> const& object,
libqpdf/QPDF.cc
@@ -1987,15 +1987,15 @@ QPDF::replaceObject(QPDFObjGen const&amp; og, QPDFObjectHandle oh) @@ -1987,15 +1987,15 @@ QPDF::replaceObject(QPDFObjGen const&amp; og, QPDFObjectHandle oh)
1987 } 1987 }
1988 1988
1989 void 1989 void
1990 -QPDF::removeObject(QPDFObjGen const& og) 1990 +QPDF::removeObject(QPDFObjGen og)
1991 { 1991 {
1992 - auto null = QPDFObjectHandle::newNull();  
1993 m->xref_table.erase(og); 1992 m->xref_table.erase(og);
1994 - if (isCached(og)) { 1993 + if (auto cached = m->obj_cache.find(og); cached != m->obj_cache.end()) {
1995 // Take care of any object handles that may be floating around. 1994 // Take care of any object handles that may be floating around.
1996 - replaceObject(og, null); 1995 + cached->second.object->assign(QPDF_Null::create());
  1996 + cached->second.object->setObjGen(nullptr, QPDFObjGen());
  1997 + m->obj_cache.erase(cached);
1997 } 1998 }
1998 - m->obj_cache.erase(og);  
1999 } 1999 }
2000 2000
2001 void 2001 void