aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-04-11 18:16:40 +0200
committerm-holger <m-holger@kubitscheck.org>2023-04-11 19:01:14 +0200
commit08d7b56746a93c25db2991403fec7e56cbae132d (patch)
treebc316f24cb424286a2341e0855211bfdc613c336 /libqpdf
parent7e77af3583c76b0af4c4cfa2873e1ca2810d484a (diff)
downloadqpdf-08d7b56746a93c25db2991403fec7e56cbae132d.tar.zst
Prevent destruction of shared null objects
#863 uses a single null object for nulls that were previously implicit. In certain circumstances this shared null object gets destroyed (i.e changed to a QPDF_Destroyed object) when a QPDF object is destroyed. Modify the QPDF destructor so that null objects get disconnected from the dying QPDF object but not destroyed to prevent this from happening.
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDF.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 83944be4..c7cc1370 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -247,10 +247,11 @@ QPDF::~QPDF()
// but we'll explicitly clear the xref table anyway just to
// prevent any possibility of resolve() succeeding.
this->m->xref_table.clear();
- auto null_obj = QPDF_Null::create();
for (auto const& iter: this->m->obj_cache) {
iter.second.object->disconnect();
- iter.second.object->destroy();
+ if (iter.second.object->getTypeCode() != ::ot_null) {
+ iter.second.object->destroy();
+ }
}
}