Commit 8715d6a69389646a1dfd224f618ee6af4e487a1b

Authored by m-holger
1 parent 5641832e

Tweak QPDF::replaceObject

include/qpdf/QPDF.hh
... ... @@ -1038,7 +1038,7 @@ class QPDF
1038 1038 QPDFObjectHandle makeIndirectFromQPDFObject(std::shared_ptr<QPDFObject> const& obj);
1039 1039 bool isCached(QPDFObjGen const& og);
1040 1040 bool isUnresolved(QPDFObjGen const& og);
1041   - void removeObject(QPDFObjGen const& og);
  1041 + void removeObject(QPDFObjGen og);
1042 1042 void updateCache(
1043 1043 QPDFObjGen const& og,
1044 1044 std::shared_ptr<QPDFObject> const& object,
... ...
libqpdf/QPDF.cc
... ... @@ -1987,15 +1987,15 @@ QPDF::replaceObject(QPDFObjGen const&amp; og, QPDFObjectHandle oh)
1987 1987 }
1988 1988  
1989 1989 void
1990   -QPDF::removeObject(QPDFObjGen const& og)
  1990 +QPDF::removeObject(QPDFObjGen og)
1991 1991 {
1992   - auto null = QPDFObjectHandle::newNull();
1993 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 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 2001 void
... ...