From 556c34f0f225bfc6eaeb617693e0161fbce5f2f3 Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 10 Aug 2022 13:16:06 +0100 Subject: Add private method QPDF::ObjCache::update Add a new obj_cache entry or update an existing entry in place. --- libqpdf/QPDF.cc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'libqpdf') diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index d877c14a..80cc34cc 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -2111,6 +2111,23 @@ QPDF::newIndirect(QPDFObjGen const& og, std::shared_ptr const& obj) return QPDFObjectHandle::Factory::newIndirect(this, og, obj); } +void +QPDF::updateCache( + QPDFObjGen const& og, + std::shared_ptr const& object, + qpdf_offset_t end_before_space, + qpdf_offset_t end_after_space) +{ + if (isCached(og)) { + auto& cache = m->obj_cache[og]; + cache.object->assign(object); + cache.end_before_space = end_before_space; + cache.end_after_space = end_after_space; + } else { + m->obj_cache[og] = ObjCache(object, end_before_space, end_after_space); + } +} + bool QPDF::isCached(QPDFObjGen const& og) { @@ -2199,8 +2216,7 @@ QPDF::replaceObject(QPDFObjGen const& og, QPDFObjectHandle oh) resolve(og); // Replace the object in the object cache - m->obj_cache[og].object->assign( - QPDFObjectHandle::ObjAccessor::getObject(oh)); + updateCache(og, QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1); } void -- cgit v1.2.3-70-g09d2