Commit 52539544c46db0262a3bf7a67036c80b08c7f4ac
1 parent
6574dc5c
Modify QPDF::replaceReserved to allow replacing indirect nulls
Showing
2 changed files
with
6 additions
and
3 deletions
include/qpdf/QPDF.hh
| @@ -391,8 +391,8 @@ class QPDF | @@ -391,8 +391,8 @@ class QPDF | ||
| 391 | void swapObjects(int objid1, int generation1, int objid2, int generation2); | 391 | void swapObjects(int objid1, int generation1, int objid2, int generation2); |
| 392 | 392 | ||
| 393 | // Replace a reserved object. This is a wrapper around replaceObject but it guarantees that the | 393 | // Replace a reserved object. This is a wrapper around replaceObject but it guarantees that the |
| 394 | - // underlying object is a reserved object. After this call, reserved will be a reference to | ||
| 395 | - // replacement. | 394 | + // underlying object is a reserved object or a null object. After this call, reserved will |
| 395 | + // be a reference to replacement. | ||
| 396 | QPDF_DLL | 396 | QPDF_DLL |
| 397 | void replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement); | 397 | void replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement); |
| 398 | 398 |
libqpdf/QPDF.cc
| @@ -1948,7 +1948,10 @@ void | @@ -1948,7 +1948,10 @@ void | ||
| 1948 | QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement) | 1948 | QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement) |
| 1949 | { | 1949 | { |
| 1950 | QTC::TC("qpdf", "QPDF replaceReserved"); | 1950 | QTC::TC("qpdf", "QPDF replaceReserved"); |
| 1951 | - reserved.assertReserved(); | 1951 | + auto tc = reserved.getTypeCode(); |
| 1952 | + if (!(tc == ::ot_reserved || tc == ::ot_null)) { | ||
| 1953 | + throw std::logic_error("replaceReserved called with non-reserverd object"); | ||
| 1954 | + } | ||
| 1952 | replaceObject(reserved.getObjGen(), replacement); | 1955 | replaceObject(reserved.getObjGen(), replacement); |
| 1953 | } | 1956 | } |
| 1954 | 1957 |