aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-08-12 16:14:11 +0200
committerm-holger <m-holger@kubitscheck.org>2022-09-01 18:09:07 +0200
commit89061d5b33baa7e8f4e3486d0c7ccf2447500b13 (patch)
treeaac88e38fb22b33ca4b3daaab36a544f6a037bd8 /libqpdf
parentae6e484e23e4f11878689be32bfcc6a28259b708 (diff)
downloadqpdf-89061d5b33baa7e8f4e3486d0c7ccf2447500b13.tar.zst
Change QPDF_Unresolved::create method to take QPDF* and QPDFObjGen parameters
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDF.cc5
-rw-r--r--libqpdf/QPDF_Unresolved.cc12
-rw-r--r--libqpdf/qpdf/QPDF_Unresolved.hh4
3 files changed, 11 insertions, 10 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 553c1a41..f33e2920 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -2183,9 +2183,8 @@ QPDF::getObject(QPDFObjGen const& og)
if (!og.isIndirect()) {
return QPDFObjectHandle::newNull();
}
- // auto obj = (og.getObj() != 0) ? resolve(og) : QPDF_Null::create();
- if (!m->obj_cache.count(og)) {
- m->obj_cache[og] = ObjCache(QPDF_Unresolved::create(), -1, -1);
+ if (!isCached(og)) {
+ m->obj_cache[og] = ObjCache(QPDF_Unresolved::create(this, og), -1, -1);
}
return newIndirect(og, m->obj_cache[og].object);
}
diff --git a/libqpdf/QPDF_Unresolved.cc b/libqpdf/QPDF_Unresolved.cc
index 40d4874e..f824a9a6 100644
--- a/libqpdf/QPDF_Unresolved.cc
+++ b/libqpdf/QPDF_Unresolved.cc
@@ -2,21 +2,23 @@
#include <stdexcept>
-QPDF_Unresolved::QPDF_Unresolved() :
- QPDFValue(::ot_unresolved, "unresolved")
+QPDF_Unresolved::QPDF_Unresolved(QPDF* qpdf, QPDFObjGen const& og) :
+ QPDFValue(::ot_unresolved, "unresolved", qpdf, og)
{
}
std::shared_ptr<QPDFObject>
-QPDF_Unresolved::create()
+QPDF_Unresolved::create(QPDF* qpdf, QPDFObjGen const& og)
{
- return do_create(new QPDF_Unresolved());
+ return do_create(new QPDF_Unresolved(qpdf, og));
}
std::shared_ptr<QPDFObject>
QPDF_Unresolved::shallowCopy()
{
- return create();
+ throw std::logic_error(
+ "attempted to shallow copy unresolved QPDFObjectHandle");
+ return create(qpdf, og);
}
std::string
diff --git a/libqpdf/qpdf/QPDF_Unresolved.hh b/libqpdf/qpdf/QPDF_Unresolved.hh
index c1231590..efcf4e3d 100644
--- a/libqpdf/qpdf/QPDF_Unresolved.hh
+++ b/libqpdf/qpdf/QPDF_Unresolved.hh
@@ -7,13 +7,13 @@ class QPDF_Unresolved: public QPDFValue
{
public:
virtual ~QPDF_Unresolved() = default;
- static std::shared_ptr<QPDFObject> create();
+ static std::shared_ptr<QPDFObject> create(QPDF* qpdf, QPDFObjGen const& og);
virtual std::shared_ptr<QPDFObject> shallowCopy();
virtual std::string unparse();
virtual JSON getJSON(int json_version);
private:
- QPDF_Unresolved();
+ QPDF_Unresolved(QPDF* qpdf, QPDFObjGen const& og);
};
#endif // QPDF_UNRESOLVED_HH