diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-04-11 18:16:40 +0200 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-04-11 19:01:14 +0200 |
commit | 08d7b56746a93c25db2991403fec7e56cbae132d (patch) | |
tree | bc316f24cb424286a2341e0855211bfdc613c336 | |
parent | 7e77af3583c76b0af4c4cfa2873e1ca2810d484a (diff) | |
download | qpdf-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.cc | 5 |
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(); + } } } |