Commit a800b4eaa125f424fb6fc6868a64a020a22aa7fb
1 parent
218900d2
updated ChangeLog
git-svn-id: svn+q:///qpdf/trunk@947 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing
2 changed files
with
41 additions
and
0 deletions
ChangeLog
| 1 | +2010-03-27 Jay Berkenbilt <ejb@ql.org> | ||
| 2 | + | ||
| 3 | + * libqpdf/QPDF_optimization.cc (flattenScalarReferences): Flatten | ||
| 4 | + scalar references for unreferenced objects as well as those seen | ||
| 5 | + during traversal of the file. This matters when preserving object | ||
| 6 | + streams that contain unreferenced objects with indirect scalars. | ||
| 7 | + (Fixes qpdf-Bugs-2974522.) Updated TODO with a description of a | ||
| 8 | + possibly better fix involving removal of flattenScalarReferences. | ||
| 9 | + | ||
| 10 | + * libqpdf/Pl_AES_PDF.cc (finish): Don't complain if an AES input | ||
| 11 | + buffer is not a multiple of 16 bytes. Instead, just pad with | ||
| 12 | + nulls and hope for the best. PDF files have been encountered "in | ||
| 13 | + the wild" that contain AES buffers that aren't a multiple of 16 | ||
| 14 | + bytes. | ||
| 15 | + | ||
| 1 | 2010-01-24 Jay Berkenbilt <ejb@ql.org> | 16 | 2010-01-24 Jay Berkenbilt <ejb@ql.org> |
| 2 | 17 | ||
| 3 | * 2.1.2: release | 18 | * 2.1.2: release |
TODO
| @@ -15,6 +15,32 @@ | @@ -15,6 +15,32 @@ | ||
| 15 | General | 15 | General |
| 16 | ======= | 16 | ======= |
| 17 | 17 | ||
| 18 | + * See whether it's possible to remove the call to | ||
| 19 | + flattenScalarReferences. I can't easily figure out why I do it, | ||
| 20 | + but removing it causes strange test failures in linearization. I | ||
| 21 | + would have to study the optimization and linearization code to | ||
| 22 | + figure out why I added this to begin with and what in the code | ||
| 23 | + assumes it's the case. For enqueueObject and unparseChild in | ||
| 24 | + QPDFWriter, simply removing the checks for indirect scalars seems | ||
| 25 | + sufficient. | ||
| 26 | + | ||
| 27 | + To pursue this, remove the call to flattenScalarReferences in | ||
| 28 | + QPDFWriter.cc and disable the logic_error exceptions for indirect | ||
| 29 | + scalars. Just search for flattenScalarReferences in QPDFWriter.cc | ||
| 30 | + since the logic errors have comments that mention | ||
| 31 | + flattenScalarReferences. Then run the test suite. Several files | ||
| 32 | + that explicitly test flattening of scalar references fail, but the | ||
| 33 | + indirect scalars are properly preserved and written. But then | ||
| 34 | + there are some linearized files that have a bunch of unreferenced | ||
| 35 | + objects that contain scalars. Need to figure out what these are | ||
| 36 | + and why they're there. Maybe they're objects that used to be | ||
| 37 | + stream lengths. Probably we just need to make sure don't traverse | ||
| 38 | + through a stream's /Length stream when enqueueing stream | ||
| 39 | + dictionaries. | ||
| 40 | + | ||
| 41 | + If flattenScalarReferences is removed, a new method will be needed | ||
| 42 | + for checking PDF files. | ||
| 43 | + | ||
| 18 | * For debugging linearization bugs, consider adding an option to save | 44 | * For debugging linearization bugs, consider adding an option to save |
| 19 | pass 1 of linearization. This code is sufficient. Change the | 45 | pass 1 of linearization. This code is sufficient. Change the |
| 20 | interface to allow specification of a pass1 file, which would | 46 | interface to allow specification of a pass1 file, which would |