Commit 70665cb381ab8e24d6713bc2a6899520d6097500
1 parent
38afdcea
Internally use unsafeShallowCopy where we can
Showing
1 changed file
with
6 additions
and
4 deletions
libqpdf/QPDFWriter.cc
| @@ -1502,12 +1502,14 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, | @@ -1502,12 +1502,14 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, | ||
| 1502 | else if (object.isDictionary()) | 1502 | else if (object.isDictionary()) |
| 1503 | { | 1503 | { |
| 1504 | // Make a shallow copy of this object so we can modify it | 1504 | // Make a shallow copy of this object so we can modify it |
| 1505 | - // safely without affecting the original. This code makes | 1505 | + // safely without affecting the original. This code makes |
| 1506 | // assumptions about things that are made true in | 1506 | // assumptions about things that are made true in |
| 1507 | // prepareFileForWrite, such as that certain things are direct | 1507 | // prepareFileForWrite, such as that certain things are direct |
| 1508 | // objects so that replacing them doesn't leave unreferenced | 1508 | // objects so that replacing them doesn't leave unreferenced |
| 1509 | - // objects in the output. | ||
| 1510 | - object = object.shallowCopy(); | 1509 | + // objects in the output. We can use unsafeShallowCopy here |
| 1510 | + // because we are all we are doing is removing or replacing | ||
| 1511 | + // top-level keys. | ||
| 1512 | + object = object.unsafeShallowCopy(); | ||
| 1511 | 1513 | ||
| 1512 | // Handle special cases for specific dictionaries. | 1514 | // Handle special cases for specific dictionaries. |
| 1513 | 1515 | ||
| @@ -2413,7 +2415,7 @@ QPDFWriter::getTrimmedTrailer() | @@ -2413,7 +2415,7 @@ QPDFWriter::getTrimmedTrailer() | ||
| 2413 | // Remove keys from the trailer that necessarily have to be | 2415 | // Remove keys from the trailer that necessarily have to be |
| 2414 | // replaced when writing the file. | 2416 | // replaced when writing the file. |
| 2415 | 2417 | ||
| 2416 | - QPDFObjectHandle trailer = this->m->pdf.getTrailer().shallowCopy(); | 2418 | + QPDFObjectHandle trailer = this->m->pdf.getTrailer().unsafeShallowCopy(); |
| 2417 | 2419 | ||
| 2418 | // Remove encryption keys | 2420 | // Remove encryption keys |
| 2419 | trailer.removeKey("/ID"); | 2421 | trailer.removeKey("/ID"); |