aboutsummaryrefslogtreecommitdiffstats
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
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.
-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();
+ }
}
}