summaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Dictionary.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDF_Dictionary.cc')
-rw-r--r--libqpdf/QPDF_Dictionary.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/libqpdf/QPDF_Dictionary.cc b/libqpdf/QPDF_Dictionary.cc
index 7700b81b..942e6d9e 100644
--- a/libqpdf/QPDF_Dictionary.cc
+++ b/libqpdf/QPDF_Dictionary.cc
@@ -121,8 +121,10 @@ QPDF_Dictionary::getAsMap() const
void
QPDF_Dictionary::replaceKey(std::string const& key, QPDFObjectHandle value)
{
- if (value.isNull()) {
- // The PDF spec doesn't distinguish between keys with null values and missing keys.
+ if (value.isNull() && !value.isIndirect()) {
+ // The PDF spec doesn't distinguish between keys with null values and missing keys. Allow
+ // indirect nulls which are equivalent to a dangling reference, which is permitted by the
+ // spec.
removeKey(key);
} else {
// add or replace value