-
For std::string and std::vector, replace operator[] with at. This was done using an automated process. See README.hardening for details.
-
Ideally, the library should never call assert outside of test code, but it does in several places. For some cases where the assertion might conceivably fail because of a problem with the input data, replace assertions with exceptions so that they can be trapped by the calling application. This commit surely misses some cases and replaced some cases unnecessarily, but it should still be an improvement.
-
In internal code and examples, replace calls to getObjectID() and getGeneration() with calls to getObjGen() where possible.
-
This includes QPDF::copyForeignObject and supporting foreign objects as arguments to addPage*.
-
Previous versions of qpdf incorrectly passed arbitrary objects from /Pages objects down to individual pages in direct contradition with the PDF specification. These are now left in /Pages. When intermediate /Pages nodes are being discarded as when the /Pages tree is being flattened, a warning is issued when unknown keys are encountered.
-
Refactored optimizePagesTree to pushInheritedAttributesToPage and made public