Commit cc11285e57c07df34e5c7e2aa41100e22d3a128e
1 parent
2532db57
Deprecate QPDFObjectHandle::parse overload and undeprecate isInitialized
Showing
4 changed files
with
20 additions
and
12 deletions
TODO.md
| ... | ... | @@ -463,10 +463,10 @@ so, I find it useful to make reference to them in this list. |
| 463 | 463 | which includes machine-readable dump of table D.2 in the ISO-32000 PDF spec. This shows the |
| 464 | 464 | mapping between Unicode, StandardEncoding, WinAnsiEncoding, MacRomanEncoding, and PDFDocEncoding. |
| 465 | 465 | |
| 466 | -* Some test cases on bad files fail because qpdf is unable to find the root dictionary when it fails | |
| 467 | - to read the trailer. Recovery could find the root dictionary and even the info dictionary in other | |
| 468 | - ways. In particular, issue-202.pdf can be opened by evince, and there's no real reason that qpdf | |
| 469 | - couldn't be made to be able to recover that file as well. | |
| 466 | +* Some test cases on bad files failed because qpdf was unable to find the root dictionary when it | |
| 467 | + failed to read the trailer. Ths was fixed in https://github.com/qpdf/qpdf/pull/1343 . A similar | |
| 468 | + issue with a similar solution exists for failure to find the pages tree | |
| 469 | + (see https://github.com/qpdf/qpdf/issues/1362). | |
| 470 | 470 | |
| 471 | 471 | * Audit every place where qpdf allocates memory to see whether there are cases where malicious |
| 472 | 472 | inputs could cause qpdf to attempt to grab very large amounts of memory. Certainly there are cases |
| ... | ... | @@ -499,10 +499,10 @@ so, I find it useful to make reference to them in this list. |
| 499 | 499 | ../misc/digital-signatures/digitally-signed-pdf-xfa.pdf. If digital signatures are implemented, |
| 500 | 500 | update the docs on crypto providers, which mention that this may happen in the future. |
| 501 | 501 | |
| 502 | -* Qpdf does not honor /EFF when adding new file attachments. When it encrypts, it never generates | |
| 502 | +* qpdf does not honor /EFF when adding new file attachments. When it encrypts, it never generates | |
| 503 | 503 | streams with explicit crypt filters. Prior to 10.2, there was an incorrect attempt to treat /EFF |
| 504 | 504 | as a default value for decrypting file attachment streams, but it is not supposed to mean that. |
| 505 | - Instead, it is intended for conforming writers to obey this when adding new attachments. Qpdf is | |
| 505 | + Instead, it is intended for conforming writers to obey this when adding new attachments. qpdf is | |
| 506 | 506 | not a conforming writer in that respect. |
| 507 | 507 | |
| 508 | 508 | * The whole xref handling code in the QPDF object allows the same object with more than one |
| ... | ... | @@ -533,6 +533,10 @@ so, I find it useful to make reference to them in this list. |
| 533 | 533 | * Look at places in the code where object traversal is being done and, where possible, try to avoid |
| 534 | 534 | it entirely or at least avoid ever traversing the same objects multiple times. |
| 535 | 535 | |
| 536 | +* The CLI warants a thorough review, including the introduction of proper sub-commands. Add warnings | |
| 537 | + for file names without extension or path element as first parameter | |
| 538 | + (see https://github.com/qpdf/qpdf/pull/1381). | |
| 539 | + | |
| 536 | 540 | ---------------------------------------------------------------------- |
| 537 | 541 | |
| 538 | 542 | ### HISTORICAL NOTES |
| ... | ... | @@ -548,7 +552,7 @@ As described in https://github.com/qpdf/qpdf/issues/401, there was great perform |
| 548 | 552 | between qpdf 7.1.1 and 9.1.1. Doing a bisect between dac65a21fb4fa5f871e31c314280b75adde89a6c and |
| 549 | 553 | release-qpdf-7.1.1, I found several commits that damaged performance. I fixed some of them to |
| 550 | 554 | improve performance by about 70% (as measured by saying that old times were 170% of new times). The |
| 551 | -remaining commits that broke performance either can't be correct because they would re-introduce an | |
| 555 | +remaining commits that broke performance either can't be corrected because they would re-introduce an | |
| 552 | 556 | old bug or aren't worth correcting because of the high value they offer relative to a relatively low |
| 553 | 557 | penalty. For historical reference, here are the commits. The numbers are the time in seconds on the |
| 554 | 558 | machine I happened to be using of splitting the first 100 pages of PDF32000_2008.pdf 20 times and | ... | ... |
include/qpdf/QPDFObjectHandle.hh
| ... | ... | @@ -288,7 +288,9 @@ class QPDFObjectHandle: public qpdf::BaseHandle |
| 288 | 288 | QPDFObjectHandle(QPDFObjectHandle&&) = default; |
| 289 | 289 | QPDFObjectHandle& operator=(QPDFObjectHandle&&) = default; |
| 290 | 290 | |
| 291 | - [[deprecated("use operator bool()")]] inline bool isInitialized() const; | |
| 291 | + // This method is provided for backward compatibility only. New code should convert to bool | |
| 292 | + // instead. | |
| 293 | + inline bool isInitialized() const; | |
| 292 | 294 | |
| 293 | 295 | // This method returns true if the QPDFObjectHandle objects point to exactly the same underlying |
| 294 | 296 | // object, meaning that changes to one are reflected in the other, or "if you paint one, the |
| ... | ... | @@ -390,10 +392,10 @@ class QPDFObjectHandle: public qpdf::BaseHandle |
| 390 | 392 | |
| 391 | 393 | // Construct an object as above by reading from the given InputSource at its current position |
| 392 | 394 | // and using the tokenizer you supply. Indirect objects and encrypted strings are permitted. |
| 393 | - // This method was intended to be called by QPDF for parsing objects that are ready from the | |
| 394 | - // object's input stream. | |
| 395 | - QPDF_DLL | |
| 396 | - static QPDFObjectHandle parse( | |
| 395 | + // This method was intended to be called by QPDF for parsing objects that are read from the | |
| 396 | + // object's input stream. To be removed in qpdf 13. See | |
| 397 | + // <https:manual.qpdf.org/release-notes.html#r12-0-0-deprecate>. | |
| 398 | + [[deprecated("to be removed in qpdf 13")]] QPDF_DLL static QPDFObjectHandle parse( | |
| 397 | 399 | std::shared_ptr<InputSource> input, |
| 398 | 400 | std::string const& object_description, |
| 399 | 401 | QPDFTokenizer&, | ... | ... |
libqpdf/qpdf/QPDFParser.hh
| ... | ... | @@ -14,6 +14,7 @@ class QPDFParser |
| 14 | 14 | QPDFParser() = delete; |
| 15 | 15 | |
| 16 | 16 | // This constructor is only used by QPDFObjectHandle::parse overload taking a QPDFTokenizer. |
| 17 | + // ABI: remove when removing QPDFObjectHandle::parse overload. | |
| 17 | 18 | QPDFParser( |
| 18 | 19 | InputSource& input, |
| 19 | 20 | std::string const& object_description, | ... | ... |
manual/release-notes.rst