Commit 8715d6a69389646a1dfd224f618ee6af4e487a1b
1 parent
5641832e
Tweak QPDF::replaceObject
Showing
2 changed files
with
6 additions
and
6 deletions
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& 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 | ... | ... |