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 /libqpdf/QPDF.cc | |
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.
Diffstat (limited to 'libqpdf/QPDF.cc')
-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(); + } } } |