Commit d7b909f97d3effc9540c35b0251bdf1c9abf187c

Authored by Jay Berkenbilt
1 parent b45e3420

Normalize whitespace in ChangeLog

Showing 1 changed file with 400 additions and 400 deletions
ChangeLog
... ... @@ -189,569 +189,569 @@
189 189  
190 190 2023-10-15 Jay Berkenbilt <ejb@ql.org>
191 191  
192   - * 11.6.3: release
  192 + * 11.6.3: release
193 193  
194 194 2023-10-14 Jay Berkenbilt <ejb@ql.org>
195 195  
196   - * Tweak linearization code to better handle files between 2 GB and
197   - 4 GB in size. Fixes #1023.
  196 + * Tweak linearization code to better handle files between 2 GB and
  197 + 4 GB in size. Fixes #1023.
198 198  
199   - * Fix data loss bug: qpdf could discard a the character after an
200   - escaped octal string consisting of less than three digits. For
201   - content, this would only happen with QDF or when normalizing
202   - content. Outside of content, it could have happened in any binary
203   - string, such as /ID, if the encoding software used octal escape
204   - strings with less than three digits. This bug was introduced
205   - between 10.6.3 and 11.0.0. Fixes #1050.
  199 + * Fix data loss bug: qpdf could discard a the character after an
  200 + escaped octal string consisting of less than three digits. For
  201 + content, this would only happen with QDF or when normalizing
  202 + content. Outside of content, it could have happened in any binary
  203 + string, such as /ID, if the encoding software used octal escape
  204 + strings with less than three digits. This bug was introduced
  205 + between 10.6.3 and 11.0.0. Fixes #1050.
206 206  
207 207 2023-10-07 Jay Berkenbilt <ejb@ql.org>
208 208  
209   - * 11.6.2: release
  209 + * 11.6.2: release
210 210  
211   - * Bug fix: when piping stream data, don't call finish on failure
212   - if the failure was caused by a previous call to finish. Fixes
213   - #1042.
  211 + * Bug fix: when piping stream data, don't call finish on failure
  212 + if the failure was caused by a previous call to finish. Fixes
  213 + #1042.
214 214  
215   - * Push .idea directory with the beginning of a sharable JetBrains
216   - CLion configuration.
  215 + * Push .idea directory with the beginning of a sharable JetBrains
  216 + CLion configuration.
217 217  
218 218 2023-09-05 Jay Berkenbilt <ejb@ql.org>
219 219  
220   - * 11.6.1: release
  220 + * 11.6.1: release
221 221  
222   - * Fix a logic error introduced in 11.6.0 in the fix to
223   - copyForeignObject. The bug could result in some pages not being
224   - copied.
  222 + * Fix a logic error introduced in 11.6.0 in the fix to
  223 + copyForeignObject. The bug could result in some pages not being
  224 + copied.
225 225  
226 226 2023-09-03 Jay Berkenbilt <ejb@ql.org>
227 227  
228   - * 11.6.0: release
  228 + * 11.6.0: release
229 229  
230   - * ascii85 parser: ignore spaces everywhere including between ~
231   - and >. Fixes #973.
  230 + * ascii85 parser: ignore spaces everywhere including between ~
  231 + and >. Fixes #973.
232 232  
233   - * Bug fix: with --pages, if one of the external files had warnings
234   - but the main file did not, the warning was previously not taken
235   - into consideration when determining the exit status.
  233 + * Bug fix: with --pages, if one of the external files had warnings
  234 + but the main file did not, the warning was previously not taken
  235 + into consideration when determining the exit status.
236 236  
237   - * Put quotation marks around the command in completion output to
238   - better handle spaces in paths. It is not a perfect fix (ideally,
239   - full shell-compatible quoting should be used), but it handles more
240   - cases than the old code and should handle all reasonable cases of
241   - qpdf being in a directory with a space in its name, which is
242   - common in Windows. Fixes #1021.
  237 + * Put quotation marks around the command in completion output to
  238 + better handle spaces in paths. It is not a perfect fix (ideally,
  239 + full shell-compatible quoting should be used), but it handles more
  240 + cases than the old code and should handle all reasonable cases of
  241 + qpdf being in a directory with a space in its name, which is
  242 + common in Windows. Fixes #1021.
243 243  
244   - * Move check for random number device to runtime instead of
245   - compile time. Since, by default, the crypto provider provides
246   - random numbers, runtime determination of a random number device is
247   - usually not needed. Fixes #1022.
  244 + * Move check for random number device to runtime instead of
  245 + compile time. Since, by default, the crypto provider provides
  246 + random numbers, runtime determination of a random number device is
  247 + usually not needed. Fixes #1022.
248 248  
249 249 2023-09-02 Jay Berkenbilt <ejb@ql.org>
250 250  
251   - * Maintain links to foreign pages when copying foreign objects.
252   - This allows hyperlinks in imported files to work. Fixes #1003.
  251 + * Maintain links to foreign pages when copying foreign objects.
  252 + This allows hyperlinks in imported files to work. Fixes #1003.
253 253  
254   - * Bug fix: Return a null object if an attempt is made to to copy a
255   - foreign /Pages object with copyForeignObject. This corrects a
256   - possible crash. Fixes #1010.
  254 + * Bug fix: Return a null object if an attempt is made to to copy a
  255 + foreign /Pages object with copyForeignObject. This corrects a
  256 + possible crash. Fixes #1010.
257 257  
258   - * Bug fix: Return a null object if an attempt is made to to copy a
259   - foreign /Pages object with copyForeignObject. Fixes #1003.
  258 + * Bug fix: Return a null object if an attempt is made to to copy a
  259 + foreign /Pages object with copyForeignObject. Fixes #1003.
260 260  
261   - * Add /MediaBox to a page if absent. Thanks M. Holger.
  261 + * Add /MediaBox to a page if absent. Thanks M. Holger.
262 262  
263   - * Use std::vector internally for Pl_Buffer to
264   - avoid incompatibility with C++20. Thanks to Zoe Clifford. Fixes #1024.
  263 + * Use std::vector internally for Pl_Buffer to
  264 + avoid incompatibility with C++20. Thanks to Zoe Clifford. Fixes #1024.
265 265  
266 266 2023-07-09 Jay Berkenbilt <ejb@ql.org>
267 267  
268   - * 11.5.0: release
  268 + * 11.5.0: release
269 269  
270   - * This release consists entirely of changes made by M. Holger.
271   - Mostly this is changes to the private API, performance
272   - enhancements, code cleanup, and reformatting to 100 columns
273   - instead of 80. For qpdf development, we are starting to use
274   - JetBrains CLion, so a lot of the changes are moving us toward a
275   - cleaner development experience in that environment.
  270 + * This release consists entirely of changes made by M. Holger.
  271 + Mostly this is changes to the private API, performance
  272 + enhancements, code cleanup, and reformatting to 100 columns
  273 + instead of 80. For qpdf development, we are starting to use
  274 + JetBrains CLion, so a lot of the changes are moving us toward a
  275 + cleaner development experience in that environment.
276 276  
277 277 2023-06-15 Jay Berkenbilt <ejb@ql.org>
278 278  
279   - * Bug fix: when a the same page is copied multiple times, copy
280   - the annotations rather than having multiple pages share an
281   - annotation object. Thanks to M. Holger for the fix. Fixes #600.
  279 + * Bug fix: when a the same page is copied multiple times, copy
  280 + the annotations rather than having multiple pages share an
  281 + annotation object. Thanks to M. Holger for the fix. Fixes #600.
282 282  
283 283 2023-06-14 Jay Berkenbilt <ejb@ql.org>
284 284  
285   - * Add "FUTURE" build option for enabling experimental APIs. Do not
286   - package qpdf built with the FUTURE option as there are no binary
287   - compatibility or even source compatibility guarantees. The option
288   - is intended for developers who want to ensure that future
289   - potentially breaking changes are compatible with their code or
290   - provide feedback on upcoming changes. At present, the only feature
291   - enabled by FUTURE is a move constructor for QPDFObjectHandle.
292   - While this shouldn't break any code, it would change details about
293   - how many copies of a specific QPDFObjectHandle were in existence,
294   - so it could potentially break code that was relying on internal
295   - shared pointer reference counts. Thanks to M. Holger for the idea
296   - and contribution.
  285 + * Add "FUTURE" build option for enabling experimental APIs. Do not
  286 + package qpdf built with the FUTURE option as there are no binary
  287 + compatibility or even source compatibility guarantees. The option
  288 + is intended for developers who want to ensure that future
  289 + potentially breaking changes are compatible with their code or
  290 + provide feedback on upcoming changes. At present, the only feature
  291 + enabled by FUTURE is a move constructor for QPDFObjectHandle.
  292 + While this shouldn't break any code, it would change details about
  293 + how many copies of a specific QPDFObjectHandle were in existence,
  294 + so it could potentially break code that was relying on internal
  295 + shared pointer reference counts. Thanks to M. Holger for the idea
  296 + and contribution.
297 297  
298 298 2023-05-25 Jay Berkenbilt <ejb@ql.org>
299 299  
300   - * Add new method Buffer::copy and deprecate Buffer copy
301   - constructor and assignment operator. Buffer copy operations are
302   - expensive as they always involve copying the buffer content. Use
303   - "buffer2 = buffer1.copy();" or "Buffer buffer2{buffer1.copy()};"
304   - to make it explicit that copying is intended. This change was
305   - contributed by M. Holger.
  300 + * Add new method Buffer::copy and deprecate Buffer copy
  301 + constructor and assignment operator. Buffer copy operations are
  302 + expensive as they always involve copying the buffer content. Use
  303 + "buffer2 = buffer1.copy();" or "Buffer buffer2{buffer1.copy()};"
  304 + to make it explicit that copying is intended. This change was
  305 + contributed by M. Holger.
306 306  
307 307 2023-05-21 Jay Berkenbilt <ejb@ql.org>
308 308  
309   - * 11.4.0: release
  309 + * 11.4.0: release
310 310  
311 311 2023-05-20 Jay Berkenbilt <ejb@ql.org>
312 312  
313   - * From M. Holger: add QPDF::newReserved as a better alternative to
314   - QPDFObjectHandle::newReserved. The operation of creating a new
315   - reserved object fits better in the QPDF API. The old call just
316   - delegates to the new one.
  313 + * From M. Holger: add QPDF::newReserved as a better alternative to
  314 + QPDFObjectHandle::newReserved. The operation of creating a new
  315 + reserved object fits better in the QPDF API. The old call just
  316 + delegates to the new one.
317 317  
318 318 2023-05-13 Jay Berkenbilt <ejb@ql.org>
319 319  
320   - * When an annotation dictionary's appearance dictionary (`/AP`)
321   - has a key that is a stream, disregard `/AS` (which is supposed to
322   - point to a subkey). This enables qpdf to not ignore annotations
323   - that have incorrect values for `/AS` when the appearance stream is
324   - directly in the `/AP` dictionary instead of in a subkey. Fixes
325   - #949.
  320 + * When an annotation dictionary's appearance dictionary (`/AP`)
  321 + has a key that is a stream, disregard `/AS` (which is supposed to
  322 + point to a subkey). This enables qpdf to not ignore annotations
  323 + that have incorrect values for `/AS` when the appearance stream is
  324 + directly in the `/AP` dictionary instead of in a subkey. Fixes
  325 + #949.
326 326  
327 327 2023-04-02 Jay Berkenbilt <ejb@ql.org>
328   - * Allow QPDFJob's workflow to be split into a reading phase and a
329   - writing phase to allow the caller to operate on the QPDF object
330   - before it is written. This adds methods QPDFJob::createQPDF and
331   - QPDFJob::writeQPDF and corresponding C API functions
332   - qpdfjob_create_qpdf and qpdfjob_write_qpdf. Thanks to M. Holger
333   - for the contribution.
  328 + * Allow QPDFJob's workflow to be split into a reading phase and a
  329 + writing phase to allow the caller to operate on the QPDF object
  330 + before it is written. This adds methods QPDFJob::createQPDF and
  331 + QPDFJob::writeQPDF and corresponding C API functions
  332 + qpdfjob_create_qpdf and qpdfjob_write_qpdf. Thanks to M. Holger
  333 + for the contribution.
334 334  
335 335 2023-04-01 Jay Berkenbilt <ejb@ql.org>
336   - * From M. Holger: throw a logic error if an uninitialized or
337   - foreign QPDFObjectHandle is added to an array.
  336 + * From M. Holger: throw a logic error if an uninitialized or
  337 + foreign QPDFObjectHandle is added to an array.
338 338  
339 339 2023-03-18 Jay Berkenbilt <ejb@ql.org>
340 340  
341   - * Enhance --optimize-images to support images nested inside of
342   - form XObjects. Thanks to Connor Osborne (github user cdosborn) for
343   - the contribution. Fixes #923.
  341 + * Enhance --optimize-images to support images nested inside of
  342 + form XObjects. Thanks to Connor Osborne (github user cdosborn) for
  343 + the contribution. Fixes #923.
344 344  
345 345 2023-02-25 Jay Berkenbilt <ejb@ql.org>
346 346  
347   - * 11.3.0: release
  347 + * 11.3.0: release
348 348  
349   - * When performing overlay or underlay operations, convert the
350   - original page to a form XObject instead of simply isolating its
351   - contents with q/Q operators. This prevents unbalanced q/Q
352   - operators in any of the original pages from messing up the
353   - graphics state of anything that is overlaid on top of it. Fixes
354   - #904.
  349 + * When performing overlay or underlay operations, convert the
  350 + original page to a form XObject instead of simply isolating its
  351 + contents with q/Q operators. This prevents unbalanced q/Q
  352 + operators in any of the original pages from messing up the
  353 + graphics state of anything that is overlaid on top of it. Fixes
  354 + #904.
355 355  
356 356 2023-02-18 Jay Berkenbilt <ejb@ql.org>
357 357  
358   - * Treat all linearization errors and warnings as warnings, and
359   - issue them through the normal warning system using the new error
360   - code qpdf_e_linearization. That means that --no-warn will suppress
361   - them, and the file name is included in the warning. Fixes #851.
  358 + * Treat all linearization errors and warnings as warnings, and
  359 + issue them through the normal warning system using the new error
  360 + code qpdf_e_linearization. That means that --no-warn will suppress
  361 + them, and the file name is included in the warning. Fixes #851.
362 362  
363 363 2023-01-28 Jay Berkenbilt <ejb@ql.org>
364 364  
365   - * New option --remove-restrictions removes security restrictions
366   - from digitally signed files. Fixes #833.
  365 + * New option --remove-restrictions removes security restrictions
  366 + from digitally signed files. Fixes #833.
367 367  
368 368 2023-01-09 Jay Berkenbilt <ejb@ql.org>
369 369  
370   - * Bug fix: flatten annotations should handle a page with no
371   - /Resources key. Fixes #827.
  370 + * Bug fix: flatten annotations should handle a page with no
  371 + /Resources key. Fixes #827.
372 372  
373 373 2022-11-20 Jay Berkenbilt <ejb@ql.org>
374 374  
375   - * 11.2.0: release
  375 + * 11.2.0: release
376 376  
377   - * Add a few convenience methods to QPDFTokenizer::Token for
378   - checking token types. thanks to M. Holger for the contribution.
  377 + * Add a few convenience methods to QPDFTokenizer::Token for
  378 + checking token types. thanks to M. Holger for the contribution.
379 379  
380   - * Add stream creation methods to the QPDF class as a better
381   - alternative to the ones in the QPDFObjectHandle class. Thanks to
382   - M. Holger for the contribution.
  380 + * Add stream creation methods to the QPDF class as a better
  381 + alternative to the ones in the QPDFObjectHandle class. Thanks to
  382 + M. Holger for the contribution.
383 383  
384 384 2022-11-19 Jay Berkenbilt <ejb@ql.org>
385 385  
386   - * Bug fix: handle special case of an earlier xref stream object's
387   - object number being reused by an update made by appending the
388   - file. Fixes #809.
  386 + * Bug fix: handle special case of an earlier xref stream object's
  387 + object number being reused by an update made by appending the
  388 + file. Fixes #809.
389 389  
390 390 2022-10-08 Jay Berkenbilt <ejb@ql.org>
391 391  
392   - * Fix major performance bug with the openssl crypto provider when
393   - using OpenSSL 3. The legacy loader and rc4 algorithm was being
394   - loaded with every call to the crypto provider instead of once in
395   - the life of the program. Fixes #798.
  392 + * Fix major performance bug with the openssl crypto provider when
  393 + using OpenSSL 3. The legacy loader and rc4 algorithm was being
  394 + loaded with every call to the crypto provider instead of once in
  395 + the life of the program. Fixes #798.
396 396  
397   - * performance_check: add --test option to limit which tests are
398   - run.
  397 + * performance_check: add --test option to limit which tests are
  398 + run.
399 399  
400 400 2022-10-06 Jay Berkenbilt <ejb@ql.org>
401 401  
402   - * Change minimum required C++ version from C++-14 to C++-17.
  402 + * Change minimum required C++ version from C++-14 to C++-17.
403 403  
404   - * Fix another symbol export issue with the MinGW build.
  404 + * Fix another symbol export issue with the MinGW build.
405 405  
406 406 2022-10-01 Jay Berkenbilt <ejb@ql.org>
407 407  
408   - * 11.1.1: release
  408 + * 11.1.1: release
409 409  
410 410 2022-09-27 Jay Berkenbilt <ejb@ql.org>
411 411  
412   - * Bug fix: avoid having the AppImage discard the first argument
413   - when renamed to one of the embedded executables. Fixes #789.
  412 + * Bug fix: avoid having the AppImage discard the first argument
  413 + when renamed to one of the embedded executables. Fixes #789.
414 414  
415   - * Add AppImage-specific tests to CI. These test different
416   - invocation styles and loading of the proper shared library.
  415 + * Add AppImage-specific tests to CI. These test different
  416 + invocation styles and loading of the proper shared library.
417 417  
418 418 2022-09-26 Jay Berkenbilt <ejb@ql.org>
419 419  
420   - * Bug fix: avoid using PDF Doc encoding for strings whose PDF Doc
421   - encoding representation starts with UTF-16 or UTF-8 markers. Fixes
422   - #778.
  420 + * Bug fix: avoid using PDF Doc encoding for strings whose PDF Doc
  421 + encoding representation starts with UTF-16 or UTF-8 markers. Fixes
  422 + #778.
423 423  
424 424 2022-09-27 Jay Berkenbilt <ejb@ql.org>
425 425  
426   - * Add tests to CI for char being unsigned by default.
  426 + * Add tests to CI for char being unsigned by default.
427 427  
428 428 2022-09-14 Jay Berkenbilt <ejb@ql.org>
429 429  
430   - * 11.1.0: release
  430 + * 11.1.0: release
431 431  
432   - * Add notes to documentation clarifying that installing the dev
433   - component usually requires the lib component to also be installed.
  432 + * Add notes to documentation clarifying that installing the dev
  433 + component usually requires the lib component to also be installed.
434 434  
435   - * Set CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON in cmake to
436   - (hopefully) solve the problem of older installed qpdf headers
437   - interfering with building qpdf from source. Fixes #763.
  435 + * Set CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON in cmake to
  436 + (hopefully) solve the problem of older installed qpdf headers
  437 + interfering with building qpdf from source. Fixes #763.
438 438  
439 439 2022-09-12 Jay Berkenbilt <ejb@ql.org>
440 440  
441   - * Add some missing DLL exports that only affect the Windows build.
  441 + * Add some missing DLL exports that only affect the Windows build.
442 442  
443   - * Remove compile-time test for LL_FMT. It's unlikely that any
444   - compiler new enough to build qpdf still doesn't support %lld.
  443 + * Remove compile-time test for LL_FMT. It's unlikely that any
  444 + compiler new enough to build qpdf still doesn't support %lld.
445 445  
446 446 2022-09-10 Jay Berkenbilt <ejb@ql.org>
447 447  
448   - * 11.0.0: release
  448 + * 11.0.0: release
449 449  
450 450 2022-09-09 Jay Berkenbilt <ejb@ql.org>
451 451  
452   - * Add QPDFObjectHandle::isSameObjectAs to test whether two
453   - QPDFObjectHandle objects point to the same underlying object.
  452 + * Add QPDFObjectHandle::isSameObjectAs to test whether two
  453 + QPDFObjectHandle objects point to the same underlying object.
454 454  
455   - * Expose ability to create custom loggers and to get and set the
456   - logger for QPDF and QPDFJob through the C API.
  455 + * Expose ability to create custom loggers and to get and set the
  456 + logger for QPDF and QPDFJob through the C API.
457 457  
458 458 2022-09-08 Jay Berkenbilt <ejb@ql.org>
459 459  
460   - * Added new functions to the C API to support qpdf JSON:
461   - qpdf_create_from_json_file, qpdf_create_from_json_data,
462   - qpdf_update_from_json_file, qpdf_update_from_json_data, and
463   - qpdf_write_json. Examples can be found in qpdf-ctest.c (in the
464   - source tree), tests 42 through 47.
  460 + * Added new functions to the C API to support qpdf JSON:
  461 + qpdf_create_from_json_file, qpdf_create_from_json_data,
  462 + qpdf_update_from_json_file, qpdf_update_from_json_data, and
  463 + qpdf_write_json. Examples can be found in qpdf-ctest.c (in the
  464 + source tree), tests 42 through 47.
465 465  
466   - * Add QPDFObjectHandle::isDestroyed() to test whether an indirect
467   - object was from a QPDF that has been destroyed.
  466 + * Add QPDFObjectHandle::isDestroyed() to test whether an indirect
  467 + object was from a QPDF that has been destroyed.
468 468  
469 469 2022-09-07 Jay Berkenbilt <ejb@ql.org>
470 470  
471   - * Add QPDFObjectHandle::getQPDF(), which returns a reference, as
472   - an alternative to QPDFObjectHandle::getOwningQPDF().
  471 + * Add QPDFObjectHandle::getQPDF(), which returns a reference, as
  472 + an alternative to QPDFObjectHandle::getOwningQPDF().
473 473  
474 474 2022-09-06 Jay Berkenbilt <ejb@ql.org>
475 475  
476   - * For all bounding box methods in QPDFPageObjectHelper other than
477   - MediaBox, add a parameter `copy_if_fallback`, and add comments
478   - explaining in depth exactly what copy_if_shared and
479   - copy_if_fallback mean. Fixes #664.
  476 + * For all bounding box methods in QPDFPageObjectHelper other than
  477 + MediaBox, add a parameter `copy_if_fallback`, and add comments
  478 + explaining in depth exactly what copy_if_shared and
  479 + copy_if_fallback mean. Fixes #664.
480 480  
481   - * Add new methods getArtBox and getBleedBox to
482   - QPDFPageObjectHelper, completing the set of bounding box methods.
  481 + * Add new methods getArtBox and getBleedBox to
  482 + QPDFPageObjectHelper, completing the set of bounding box methods.
483 483  
484   - * The --show-encryption option now works even if a correct
485   - password is not supplied. If you were using --show-encryption to
486   - test whether you have the right password, use --requires-password
487   - instead. Fixes #598.
  484 + * The --show-encryption option now works even if a correct
  485 + password is not supplied. If you were using --show-encryption to
  486 + test whether you have the right password, use --requires-password
  487 + instead. Fixes #598.
488 488  
489 489 2022-09-05 Jay Berkenbilt <ejb@ql.org>
490 490  
491   - * Add a move constructor to Buffer, making it possible to move
492   - rather than copy the internal buffer. Thanks to jbarlow83 for the
493   - contribution.
  491 + * Add a move constructor to Buffer, making it possible to move
  492 + rather than copy the internal buffer. Thanks to jbarlow83 for the
  493 + contribution.
494 494  
495 495 2022-09-02 Jay Berkenbilt <ejb@ql.org>
496 496  
497   - * Add new QPDF::create() factory method that returns
498   - std::shared_ptr<QPDF>.
  497 + * Add new QPDF::create() factory method that returns
  498 + std::shared_ptr<QPDF>.
499 499  
500   - * Prevent copying/assigning to QPDF objects in the API. It has
501   - never been safe to do this, but the API wasn't preventing it.
  500 + * Prevent copying/assigning to QPDF objects in the API. It has
  501 + never been safe to do this, but the API wasn't preventing it.
502 502  
503 503 2022-09-01 Jay Berkenbilt <ejb@ql.org>
504 504  
505   - * Remove QPDFObject.hh from include/qpdf. The only reason to
506   - include was to get QPDFObject::object_type_e. Instead, include
507   - qpdf/Constants.h, and change `QPDFObject::ot_` to `::ot_`.
  505 + * Remove QPDFObject.hh from include/qpdf. The only reason to
  506 + include was to get QPDFObject::object_type_e. Instead, include
  507 + qpdf/Constants.h, and change `QPDFObject::ot_` to `::ot_`.
508 508  
509   - * More optimizations and cleanup from m-holger (#726, #730)
510   - including major refactor of QPDF's internal representations of
511   - objects. In addition to a large performance improvement, this also
512   - made it possible for QPDFObjectHandle::getOwningQPDF() to return a
513   - null pointer if the owning QPDF had been destroyed. (A more
514   - complete solution to this problem will be introduced for qpdf 12.)
515   - This work also paves the way for a future alternative to
516   - QPDFObjectHandle that is more idiomatic C++ and has greater type
517   - safety.
  509 + * More optimizations and cleanup from m-holger (#726, #730)
  510 + including major refactor of QPDF's internal representations of
  511 + objects. In addition to a large performance improvement, this also
  512 + made it possible for QPDFObjectHandle::getOwningQPDF() to return a
  513 + null pointer if the owning QPDF had been destroyed. (A more
  514 + complete solution to this problem will be introduced for qpdf 12.)
  515 + This work also paves the way for a future alternative to
  516 + QPDFObjectHandle that is more idiomatic C++ and has greater type
  517 + safety.
518 518  
519 519 2022-08-31 Jay Berkenbilt <ejb@ql.org>
520 520  
521   - * From m-holger (#729): refactor QPDF's parser into a new
522   - QPDFParser class, cleaning the code, significantly improving
523   - performance.
  521 + * From m-holger (#729): refactor QPDF's parser into a new
  522 + QPDFParser class, cleaning the code, significantly improving
  523 + performance.
524 524  
525 525 2022-08-27 Jay Berkenbilt <ejb@ql.org>
526 526  
527   - * From m-holger: major refactoring of QPDFTokenizer to improve
528   - readability and to optimize performance. This also included some
529   - optimizations to some InputSource classes. Thanks for this
530   - excellent contribution. Fixes #749, #442.
  527 + * From m-holger: major refactoring of QPDFTokenizer to improve
  528 + readability and to optimize performance. This also included some
  529 + optimizations to some InputSource classes. Thanks for this
  530 + excellent contribution. Fixes #749, #442.
531 531  
532 532 2022-08-07 Jay Berkenbilt <ejb@ql.org>
533 533  
534   - * Add new build configuration option ENABLE_QTC, which is off by
535   - default when not running in MAINTAINER_MODE. When this is off,
536   - QTC coverage calls sprinkled throughout the qpdf source code are
537   - compiled out for increased performance. See "Build Options" in the
538   - manual for a discussion. Fixes #714.
  534 + * Add new build configuration option ENABLE_QTC, which is off by
  535 + default when not running in MAINTAINER_MODE. When this is off,
  536 + QTC coverage calls sprinkled throughout the qpdf source code are
  537 + compiled out for increased performance. See "Build Options" in the
  538 + manual for a discussion. Fixes #714.
539 539  
540 540 2022-08-06 Jay Berkenbilt <ejb@ql.org>
541 541  
542   - * Added by m-holger: QPDF::getObject() method as a simpler form of
543   - getObjectByID or getObjectByObjGen. The older methods are being
544   - retained for compatibility and are not deprecated.
  542 + * Added by m-holger: QPDF::getObject() method as a simpler form of
  543 + getObjectByID or getObjectByObjGen. The older methods are being
  544 + retained for compatibility and are not deprecated.
545 545  
546 546 2022-07-24 Jay Berkenbilt <ejb@ql.org>
547 547  
548   - * include/qpdf/JSON.hh: Schema validation: allow a single item to
549   - appear anywhere that the schema has an array of a single item.
550   - This makes it possible to change an element of the schema from an
551   - item to an array to allow the data to accept an array where a
552   - single value was previously required. This change is needed to
553   - allow QPDFJob JSON to start accepting multiple items where a
554   - single item used to be expected without breaking backward
555   - compatibility. Without this change, the earlier fix to
556   - removeAttachment would be a breaking change. Also allow the schema
557   - to contain a multi-element array, which means that the output has
558   - to have an array of the same length in the corresponding location,
559   - and each element is validated against the corresponding schema
560   - element.
561   -
562   - * QPDFObjectHandle: for the methods insertItem, appendItem,
563   - eraseItem, replaceKey, and removeKey, add a corresponding
564   - "AndGetNew" and/or "AndGetOld" methods. The ones that end with
565   - "AndGetNew" return the newly added item. The ones that end with
566   - "AndGetOld" return the old value. The AndGetNew methods make it
567   - possible to create a new object, add it to an array or dictionary,
568   - and get a handle to it all in one line. The AndGetOld methods make
569   - it easier to retrieve an old value when removing or replacing it.
570   -
571   - * Thanks to m-holger for doing significant cleanup of private APIs
572   - and internals around QPDFObjGen and for significantly improving
573   - the performance of QPDFObjGen -- See #731. This includes a few
574   - user-visible changes:
575   - - Addition of QPDFObjectHandle::StreamDataProvider::provideStreamData
576   - overloads that take QPDFObjGen
577   - - Addition of an optional argument to QPDFObjGen::unparse allowing
578   - specification of a separator character, with the default
579   - resulting in the old behavior
580   - Examples have been updated to use improved APIs. The old
581   - provideStreamData overloads will continue to be supported, so
582   - updating older code to use the new interfaces is entirely at the
583   - programmer's discretion.
  548 + * include/qpdf/JSON.hh: Schema validation: allow a single item to
  549 + appear anywhere that the schema has an array of a single item.
  550 + This makes it possible to change an element of the schema from an
  551 + item to an array to allow the data to accept an array where a
  552 + single value was previously required. This change is needed to
  553 + allow QPDFJob JSON to start accepting multiple items where a
  554 + single item used to be expected without breaking backward
  555 + compatibility. Without this change, the earlier fix to
  556 + removeAttachment would be a breaking change. Also allow the schema
  557 + to contain a multi-element array, which means that the output has
  558 + to have an array of the same length in the corresponding location,
  559 + and each element is validated against the corresponding schema
  560 + element.
  561 +
  562 + * QPDFObjectHandle: for the methods insertItem, appendItem,
  563 + eraseItem, replaceKey, and removeKey, add a corresponding
  564 + "AndGetNew" and/or "AndGetOld" methods. The ones that end with
  565 + "AndGetNew" return the newly added item. The ones that end with
  566 + "AndGetOld" return the old value. The AndGetNew methods make it
  567 + possible to create a new object, add it to an array or dictionary,
  568 + and get a handle to it all in one line. The AndGetOld methods make
  569 + it easier to retrieve an old value when removing or replacing it.
  570 +
  571 + * Thanks to m-holger for doing significant cleanup of private APIs
  572 + and internals around QPDFObjGen and for significantly improving
  573 + the performance of QPDFObjGen -- See #731. This includes a few
  574 + user-visible changes:
  575 + - Addition of QPDFObjectHandle::StreamDataProvider::provideStreamData
  576 + overloads that take QPDFObjGen
  577 + - Addition of an optional argument to QPDFObjGen::unparse allowing
  578 + specification of a separator character, with the default
  579 + resulting in the old behavior
  580 + Examples have been updated to use improved APIs. The old
  581 + provideStreamData overloads will continue to be supported, so
  582 + updating older code to use the new interfaces is entirely at the
  583 + programmer's discretion.
584 584  
585 585 2022-06-25 Jay Berkenbilt <ejb@ql.org>
586 586  
587   - * Add tracking methods QPDF::everCalledGetAllPages() and
588   - QPDF::everPushedInheritedAttributesToPages(). Since those methods
589   - may have the side effect of creating new objects and replace
590   - objects in various places in the pages tree, it's useful to be
591   - able to find out whether they've ever been called.
  587 + * Add tracking methods QPDF::everCalledGetAllPages() and
  588 + QPDF::everPushedInheritedAttributesToPages(). Since those methods
  589 + may have the side effect of creating new objects and replace
  590 + objects in various places in the pages tree, it's useful to be
  591 + able to find out whether they've ever been called.
592 592  
593 593 2022-06-18 Jay Berkenbilt <ejb@ql.org>
594 594  
595   - * Add QPDFJob::registerProgressReporter, making it possible to
596   - override the progress reporter that is used when --progress (or
597   - the equivalent) is configured with QPDFJob. This is
598   - qpdfjob_register_progress_reporter in the C API.
  595 + * Add QPDFJob::registerProgressReporter, making it possible to
  596 + override the progress reporter that is used when --progress (or
  597 + the equivalent) is configured with QPDFJob. This is
  598 + qpdfjob_register_progress_reporter in the C API.
599 599  
600   - * Add examples that show how to capture QPDFJob's output by
601   - configuring the default logger (qpdfjob-save-attachment.cc,
602   - qpdfjob-c-save-attachment.c). Fixes #691.
  600 + * Add examples that show how to capture QPDFJob's output by
  601 + configuring the default logger (qpdfjob-save-attachment.cc,
  602 + qpdfjob-c-save-attachment.c). Fixes #691.
603 603  
604   - * Add C API for QPDFLogger -- see qpdflogger-c.h
  604 + * Add C API for QPDFLogger -- see qpdflogger-c.h
605 605  
606   - * Add additional qpdfjob C API functions take a handle.
  606 + * Add additional qpdfjob C API functions take a handle.
607 607  
608   - * Add qpdf_exit_code_e to Constants.h so that exit codes from
609   - QPDFJob are accessible to the C API.
  608 + * Add qpdf_exit_code_e to Constants.h so that exit codes from
  609 + QPDFJob are accessible to the C API.
610 610  
611   - * When --progress or --verbose is combined with writing to
612   - standard output, progress reporting and verbose messages go to
613   - standard error. Previously it was disabled in this case.
  611 + * When --progress or --verbose is combined with writing to
  612 + standard output, progress reporting and verbose messages go to
  613 + standard error. Previously it was disabled in this case.
614 614  
615 615 2022-06-05 Jay Berkenbilt <ejb@ql.org>
616 616  
617   - * QPDFJob: API breaking change: QPDFJob::doIfVerbose passes a
618   - Pipeline& rather than a std::ostream& to the the callback
619   - function.
  617 + * QPDFJob: API breaking change: QPDFJob::doIfVerbose passes a
  618 + Pipeline& rather than a std::ostream& to the the callback
  619 + function.
620 620  
621   - * Add integer types to pipeline's operator<<: short, int, long,
622   - long long, unsigned short, unsigned int, unsigned long, unsigned
623   - long long.
  621 + * Add integer types to pipeline's operator<<: short, int, long,
  622 + long long, unsigned short, unsigned int, unsigned long, unsigned
  623 + long long.
624 624  
625 625 2022-05-30 Jay Berkenbilt <ejb@ql.org>
626 626  
627   - * qpdf JSON is now at version 2. New command-line arguments:
628   - --json-output, --json-input, --update-from-json. New methods
629   - QPDF::writeJSON, QPDF::createFromJSON, QPDF::updateFromJSON. For
630   - details, see the "qpdf JSON" chapter of the manual.
  627 + * qpdf JSON is now at version 2. New command-line arguments:
  628 + --json-output, --json-input, --update-from-json. New methods
  629 + QPDF::writeJSON, QPDF::createFromJSON, QPDF::updateFromJSON. For
  630 + details, see the "qpdf JSON" chapter of the manual.
631 631  
632   - * When showing encryption data in json output, when the user
633   - password was recovered with by the owner password and the
634   - specified password does not match the user password, reveal the
635   - user password. This is not possible with 256-bit keys.
  632 + * When showing encryption data in json output, when the user
  633 + password was recovered with by the owner password and the
  634 + specified password does not match the user password, reveal the
  635 + user password. This is not possible with 256-bit keys.
636 636  
637   - * Include additional information in --list-attachments --verbose
638   - and in --json --json-key=attachments.
  637 + * Include additional information in --list-attachments --verbose
  638 + and in --json --json-key=attachments.
639 639  
640   - * Add QUtil::qpdf_time_to_iso8601 and QUtil::pdf_time_to_iso8601
641   - for converting PDF/qpdf timestamps to ISO-8601 date format.
  640 + * Add QUtil::qpdf_time_to_iso8601 and QUtil::pdf_time_to_iso8601
  641 + for converting PDF/qpdf timestamps to ISO-8601 date format.
642 642  
643 643 2022-05-18 Jay Berkenbilt <ejb@ql.org>
644 644  
645   - * Add QUtil::FileCloser to the public API. This is a simple inline
646   - class to help with automatic file closing.
  645 + * Add QUtil::FileCloser to the public API. This is a simple inline
  646 + class to help with automatic file closing.
647 647  
648 648 2022-05-17 Jay Berkenbilt <ejb@ql.org>
649 649  
650   - * Allow passing *uninitialized* (not null) objects to
651   - replaceStreamData as filter and/or decode_parms to leave any
652   - existing values for /Filter and /DecodeParms untouched.
  650 + * Allow passing *uninitialized* (not null) objects to
  651 + replaceStreamData as filter and/or decode_parms to leave any
  652 + existing values for /Filter and /DecodeParms untouched.
653 653  
654 654 2022-05-15 Jay Berkenbilt <ejb@ql.org>
655 655  
656   - * Add QUtil::is_long_long to test whether a string can be
657   - converted to a long long and back without loss of information.
  656 + * Add QUtil::is_long_long to test whether a string can be
  657 + converted to a long long and back without loss of information.
658 658  
659 659 2022-05-04 Jay Berkenbilt <ejb@ql.org>
660 660  
661   - * JSON: add a new "blob" type that takes a function to write data
662   - into. The blob is serialized as a base64-encoded representation of
663   - whatever is written to the function.
  661 + * JSON: add a new "blob" type that takes a function to write data
  662 + into. The blob is serialized as a base64-encoded representation of
  663 + whatever is written to the function.
664 664  
665   - * FileInputSource has new constructors that eliminate the need to
666   - call setFilename or setFile in most cases.
  665 + * FileInputSource has new constructors that eliminate the need to
  666 + call setFilename or setFile in most cases.
667 667  
668   - * Enhance JSON by adding a write method that takes a Pipeline* and
669   - depth, and add several helper methods to make it easier to write
670   - large amounts of JSON incrementally without having to have the
671   - whole thing in memory.
  668 + * Enhance JSON by adding a write method that takes a Pipeline* and
  669 + depth, and add several helper methods to make it easier to write
  670 + large amounts of JSON incrementally without having to have the
  671 + whole thing in memory.
672 672  
673   - * json v1 output: make "pages" and "objects" consistent.
674   - Previously, "objects" always reflected the objects exactly as they
675   - appeared in the original file, while "pages" reflected objects
676   - after repair of the pages tree. This could be misleading. Now, if
677   - "pages" is specified, "objects" shows the effects of repairing the
678   - page tree, and if not, it doesn't. This makes no difference for
679   - correct PDF files that don't have problems in the pages tree. JSON
680   - v2 will behave in a similar way.
  673 + * json v1 output: make "pages" and "objects" consistent.
  674 + Previously, "objects" always reflected the objects exactly as they
  675 + appeared in the original file, while "pages" reflected objects
  676 + after repair of the pages tree. This could be misleading. Now, if
  677 + "pages" is specified, "objects" shows the effects of repairing the
  678 + page tree, and if not, it doesn't. This makes no difference for
  679 + correct PDF files that don't have problems in the pages tree. JSON
  680 + v2 will behave in a similar way.
681 681  
682 682 2022-05-03 Jay Berkenbilt <ejb@ql.org>
683 683  
684   - * Add new Pipeline class Pl_String which appends to a std::string&
685   - passed to it at construction.
  684 + * Add new Pipeline class Pl_String which appends to a std::string&
  685 + passed to it at construction.
686 686  
687   - * Add new Pipeline class Pl_OStream, similar to Pl_StdioFile but
688   - takes a std::ostream instead of a FILE*.
  687 + * Add new Pipeline class Pl_OStream, similar to Pl_StdioFile but
  688 + takes a std::ostream instead of a FILE*.
689 689  
690   - * Add new convenience methods to Pipeline: writeCStr and
691   - writeString. Also add a limit << operator that takes C strings and
692   - std::strings. Also add an overloaded version of write that takes
693   - "char const*".
  690 + * Add new convenience methods to Pipeline: writeCStr and
  691 + writeString. Also add a limit << operator that takes C strings and
  692 + std::strings. Also add an overloaded version of write that takes
  693 + "char const*".
694 694  
695   - * API change: Pipeline::write now takes "unsigned char const *"
696   - instead of "unsigned char*". Callers shouldn't have to change
697   - anything, though can stop using writable strings or
698   - QUtil::unsigned_char_pointer. If you have implemented your own
699   - pipelines, you should change your write method to take a const
700   - pointer.
  695 + * API change: Pipeline::write now takes "unsigned char const *"
  696 + instead of "unsigned char*". Callers shouldn't have to change
  697 + anything, though can stop using writable strings or
  698 + QUtil::unsigned_char_pointer. If you have implemented your own
  699 + pipelines, you should change your write method to take a const
  700 + pointer.
701 701  
702 702 2022-05-01 Jay Berkenbilt <ejb@ql.org>
703 703  
704   - * JSON: add reactors to the JSON parser, making it possible to
705   - react to JSON parsing events as they occur and to block the
706   - results from being stored. This makes it possible to incrementally
707   - parse arbitrarily large JSON inputs.
  704 + * JSON: add reactors to the JSON parser, making it possible to
  705 + react to JSON parsing events as they occur and to block the
  706 + results from being stored. This makes it possible to incrementally
  707 + parse arbitrarily large JSON inputs.
708 708  
709 709 2022-04-30 Jay Berkenbilt <ejb@ql.org>
710 710  
711   - * QPDFWriter: change encryption API calls
712   - - Remove deprecated versions of setR*EncryptionParameters
713   - methods from before qpdf 8.4.0
714   - - Replace setR2EncryptionParameters with
715   - setR2EncryptionParametersInsecure
716   - - Replace setR3EncryptionParameters with
717   - setR3EncryptionParametersInsecure
718   - - Replace setR4EncryptionParameters with
719   - setR4EncryptionParametersInsecure
720   -
721   - * C API: change encryption API calls to match C++ interface
722   - - Remove pre-8.4.0 functions:
723   - - qpdf_set_r3_encryption_parameters
724   - - qpdf_set_r4_encryption_parameters
725   - - qpdf_set_r5_encryption_parameters
726   - - qpdf_set_r6_encryption_parameters
727   - - Add "_insecure" to insecure encryption triggers:
728   - - Replace void qpdf_set_r2_encryption_parameters
729   - with qpdf_set_r2_encryption_parameters_insecure
730   - - Replace void qpdf_set_r3_encryption_parameters2
731   - with qpdf_set_r3_encryption_parameters_insecure
732   - - Replace void qpdf_set_r4_encryption_parameters2
733   - with qpdf_set_r4_encryption_parameters_insecure
734   -
735   - * Make attempting to write encrypted files that use RC4 (40-bit or
736   - 128-bit without AES) an error rather than a warning when
737   - --allow-weak-crypto is not specified. Fixes #576.
  711 + * QPDFWriter: change encryption API calls
  712 + - Remove deprecated versions of setR*EncryptionParameters
  713 + methods from before qpdf 8.4.0
  714 + - Replace setR2EncryptionParameters with
  715 + setR2EncryptionParametersInsecure
  716 + - Replace setR3EncryptionParameters with
  717 + setR3EncryptionParametersInsecure
  718 + - Replace setR4EncryptionParameters with
  719 + setR4EncryptionParametersInsecure
  720 +
  721 + * C API: change encryption API calls to match C++ interface
  722 + - Remove pre-8.4.0 functions:
  723 + - qpdf_set_r3_encryption_parameters
  724 + - qpdf_set_r4_encryption_parameters
  725 + - qpdf_set_r5_encryption_parameters
  726 + - qpdf_set_r6_encryption_parameters
  727 + - Add "_insecure" to insecure encryption triggers:
  728 + - Replace void qpdf_set_r2_encryption_parameters
  729 + with qpdf_set_r2_encryption_parameters_insecure
  730 + - Replace void qpdf_set_r3_encryption_parameters2
  731 + with qpdf_set_r3_encryption_parameters_insecure
  732 + - Replace void qpdf_set_r4_encryption_parameters2
  733 + with qpdf_set_r4_encryption_parameters_insecure
  734 +
  735 + * Make attempting to write encrypted files that use RC4 (40-bit or
  736 + 128-bit without AES) an error rather than a warning when
  737 + --allow-weak-crypto is not specified. Fixes #576.
738 738  
739 739 2022-04-24 Jay Berkenbilt <ejb@ql.org>
740 740  
741   - * Bug fix: "removeAttachment" in the job JSON now takes an array
742   - of strings instead of a string. It should have taken an array of
743   - strings since the corresponding command-line argument,
744   - --remove-attachment, is repeatable. Fixes #693.
  741 + * Bug fix: "removeAttachment" in the job JSON now takes an array
  742 + of strings instead of a string. It should have taken an array of
  743 + strings since the corresponding command-line argument,
  744 + --remove-attachment, is repeatable. Fixes #693.
745 745  
746   - * Deprecate QPDFObjectHandle::replaceOrRemoveKey -- it does and
747   - always has done the same thing as replaceKey.
  746 + * Deprecate QPDFObjectHandle::replaceOrRemoveKey -- it does and
  747 + always has done the same thing as replaceKey.
748 748  
749 749 2022-04-23 Jay Berkenbilt <ejb@ql.org>
750 750  
751   - * Add a new QPDF::warn method that takes the parameters of
752   - QPDFExc's constructor except for the filename, which is taken from
753   - the QPDF object. This is a shorter way to issue warnings on behalf
754   - of a QPDF object.
  751 + * Add a new QPDF::warn method that takes the parameters of
  752 + QPDFExc's constructor except for the filename, which is taken from
  753 + the QPDF object. This is a shorter way to issue warnings on behalf
  754 + of a QPDF object.
755 755  
756 756 * Add new method QUtil::is_explicit_utf8 that tests whether a
757 757 string is explicitly marked as being UTF-8 encoded, as allowed by
... ... @@ -2763,7 +2763,7 @@
2763 2763  
2764 2764 2019-01-03 Jay Berkenbilt <ejb@ql.org>
2765 2765  
2766   - * Add --generate-appearances flag to the qpdf command-line tool to
  2766 + * Add --generate-appearances flag to the qpdf command-line tool to
2767 2767 trigger generation of appearance streams.
2768 2768  
2769 2769 * Fix behavior of form field value setting to handle the following
... ... @@ -3168,7 +3168,7 @@
3168 3168  
3169 3169 2018-02-04 Jay Berkenbilt <ejb@ql.org>
3170 3170  
3171   - * Changes listed on today's date are numerous and reflect
  3171 + * Changes listed on today's date are numerous and reflect
3172 3172 significant enhancements to qpdf's lexical layer. While many
3173 3173 nuances are discussed and a handful of small bugs were fixed, it
3174 3174 should be emphasized that none of these issues have any impact on
... ... @@ -3503,7 +3503,7 @@
3503 3503 - New command-line flags --compress-streams and --decode-level
3504 3504 to replace/enhance --stream-data
3505 3505 - New QPDFWriter::setCompressStreams and
3506   - QPDFWriter::setDecodeLevel methods
  3506 + QPDFWriter::setDecodeLevel methods
3507 3507 Please see documentation, header files, and help messages for
3508 3508 details on these new features.
3509 3509  
... ... @@ -3736,7 +3736,7 @@
3736 3736 * Bug fix: if the last object in the first part of a linearized
3737 3737 file had an offset that was below 65536 by less than the size of
3738 3738 the hint stream, the xref stream was invalid and the resulting file
3739   - is not usable. This is now fixed.
  3739 + is not usable. This is now fixed.
3740 3740  
3741 3741 2014-01-14 Jay Berkenbilt <ejb@ql.org>
3742 3742  
... ... @@ -3747,7 +3747,7 @@
3747 3747 * Bug fix: when copying foreign objects (which occurs during page
3748 3748 splitting among other cases), avoid traversing the same object
3749 3749 more than once if it appears more than once in the same direct
3750   - object. This bug is performance-only and does not affect the
  3750 + object. This bug is performance-only and does not affect the
3751 3751 actual output.
3752 3752  
3753 3753 2013-12-17 Jay Berkenbilt <ejb@ql.org>
... ... @@ -3811,7 +3811,7 @@
3811 3811 * 5.0.1: release
3812 3812  
3813 3813 * Warn when -accessibility=n is specified with a modern encryption
3814   - format (R > 3). Also, accept this flag (and ignore with warning)
  3814 + format (R > 3). Also, accept this flag (and ignore with warning)
3815 3815 with 256-bit encryption. qpdf has always ignored the
3816 3816 accessibility setting with R > 3, but it previously did so
3817 3817 silently.
... ... @@ -3838,7 +3838,7 @@
3838 3838 data in linearization hint streams.
3839 3839  
3840 3840 * Security fix: sanitize /W array in cross reference stream to
3841   - avoid a potential integer overflow in a multiplication. It is
  3841 + avoid a potential integer overflow in a multiplication. It is
3842 3842 unlikely that any exploits were possible from this bug as
3843 3843 additional checks were also performed.
3844 3844  
... ... @@ -3859,7 +3859,7 @@
3859 3859  
3860 3860 * Security fix: in QUtil::toUTF8, change bounds checking to avoid
3861 3861 having a pointer point temporarily outside the bounds of an
3862   - array. Some compiler optimizations could have made the original
  3862 + array. Some compiler optimizations could have made the original
3863 3863 code unsafe.
3864 3864  
3865 3865 2013-07-10 Jay Berkenbilt <ejb@ql.org>
... ... @@ -3907,8 +3907,8 @@
3907 3907 2013-06-14 Jay Berkenbilt <ejb@ql.org>
3908 3908  
3909 3909 * Detect and correct /Outlines dictionary being a direct object
3910   - when linearizing files. This is not allowed by the spec but has
3911   - been seen in the wild. Prior to this change, such a file would
  3910 + when linearizing files. This is not allowed by the spec but has
  3911 + been seen in the wild. Prior to this change, such a file would
3912 3912 cause an internal error in the linearization code, which assumed
3913 3913 /Outlines was indirect.
3914 3914  
... ... @@ -3941,7 +3941,7 @@
3941 3941 2013-03-11 Jay Berkenbilt <ejb@ql.org>
3942 3942  
3943 3943 * When creating Windows binary distributions, make sure to only
3944   - copy DLLs of the correct type. The ensures that the 32-bit
  3944 + copy DLLs of the correct type. The ensures that the 32-bit
3945 3945 distributions contain 32-bit DLLs and the 64-bit distributions
3946 3946 contain 64-bit DLLs.
3947 3947  
... ... @@ -3963,7 +3963,7 @@
3963 3963 warnings. This is useful for people who may want to use qpdf in
3964 3964 an application that is Windows 8 certified.
3965 3965  
3966   - * New method QUtil::safe_fopen to wrap calls to fopen. This is
  3966 + * New method QUtil::safe_fopen to wrap calls to fopen. This is
3967 3967 less cumbersome than calling QUtil::fopen_wrapper.
3968 3968  
3969 3969 * Remove all calls to sprintf
... ... @@ -3982,7 +3982,7 @@
3982 3982 * Bug fix: properly handle overridden compressed objects. When
3983 3983 caching objects from an object stream, only cache objects that,
3984 3984 based on the xref table, would actually be resolved into this
3985   - stream. Prior to this fix, if an object stream A contained an
  3985 + stream. Prior to this fix, if an object stream A contained an
3986 3986 object B that was overridden by an appended section of the file,
3987 3987 qpdf would cache the old value of B if any non-overridden member
3988 3988 of A was accessed before B. This commit fixes that bug.
... ... @@ -3999,7 +3999,7 @@
3999 3999 hexadecimal string
4000 4000  
4001 4001 * qpdf --check was exiting with status 0 in some rare cases even
4002   - when errors were found. It now always exits with one of the
  4002 + when errors were found. It now always exits with one of the
4003 4003 document error codes (0 for success, 2 for errors, 3 or warnings).
4004 4004  
4005 4005 2013-01-24 Jay Berkenbilt <ejb@ql.org>
... ... @@ -4014,20 +4014,20 @@
4014 4014 CXXFLAGS and were commingled with other compiler flags.
4015 4015  
4016 4016 * qpdf --check now does syntactic checks all pages' content
4017   - streams as well as checking overall document structure. Semantic
  4017 + streams as well as checking overall document structure. Semantic
4018 4018 errors are still not checked, and there are no plans to add
4019 4019 semantic checks.
4020 4020  
4021 4021 2013-01-22 Jay Berkenbilt <ejb@ql.org>
4022 4022  
4023   - * Add QPDFObjectHandle::getTypeCode(). This method returns a
  4023 + * Add QPDFObjectHandle::getTypeCode(). This method returns a
4024 4024 unique integer (enumerated type) value corresponding to the object
4025 4025 type of the QPDFObjectHandle. It can be used as an alternative to
4026 4026 the QPDFObjectHandle::is* methods for type testing, particularly
4027 4027 where there is a desire to use a switch statement or optimize for
4028 4028 performance when testing object types.
4029 4029  
4030   - * Add QPDFObjectHandle::getTypeName(). This method returns a
  4030 + * Add QPDFObjectHandle::getTypeName(). This method returns a
4031 4031 string literal describing the object type. It is useful for
4032 4032 testing and debugging.
4033 4033  
... ... @@ -4035,7 +4035,7 @@
4035 4035  
4036 4036 * Add QPDFObjectHandle::parseContentStream, which parses the
4037 4037 objects in a content stream and calls handlers in a callback
4038   - class. The example pdf-parse-content illustrates it use.
  4038 + class. The example pdf-parse-content illustrates it use.
4039 4039  
4040 4040 * Add QPDF_Operator and QPDF_InlineImage types along with
4041 4041 appropriate wrapper methods in QPDFObjectHandle. These new object
... ... @@ -4051,7 +4051,7 @@
4051 4051 password.
4052 4052  
4053 4053 * Fix detection of binary attachments in the test suite. This
4054   - resolves false test failures on some platforms. No changes to the
  4054 + resolves false test failures on some platforms. No changes to the
4055 4055 actual QPDF code were made.
4056 4056  
4057 4057 2012-12-31 Jay Berkenbilt <ejb@ql.org>
... ... @@ -4086,17 +4086,17 @@
4086 4086  
4087 4087 * Add read/write support for both the deprecated Acrobat IX
4088 4088 encryption format and the Acrobat X/PDF 2.0 encryption format
4089   - using 256-bit AES keys. Using the Acrobat IX format (R=5) forces
4090   - the version of the file to 1.7 with extension level 3. Using the
  4089 + using 256-bit AES keys. Using the Acrobat IX format (R=5) forces
  4090 + the version of the file to 1.7 with extension level 3. Using the
4091 4091 PDF 2.0 format (R=6) forces it to 1.7 extension level 8.
4092 4092  
4093 4093 * Add new method QPDF::getEncryptionKey to return the actual
4094   - encryption key used for encryption of data in the file. The key
  4094 + encryption key used for encryption of data in the file. The key
4095 4095 is returned as a std::string.
4096 4096  
4097 4097 * Non-compatible API change: change signature of
4098 4098 QPDF::compute_data_key to take the R and V values from the
4099   - encryption dictionary. There is no reason for any application
  4099 + encryption dictionary. There is no reason for any application
4100 4100 code to call this method since handling of encryption is done
4101 4101 automatically by the qpdf library. It is used internally by
4102 4102 QPDFWriter.
... ... @@ -4124,7 +4124,7 @@
4124 4124 * Fix old bug that could cause an infinite loop if user password
4125 4125 recovery methods were called and a password contained the "("
4126 4126 character (which happens to be the first byte of padding used by
4127   - older PDF encryption formats). This bug was noticed while reading
  4127 + older PDF encryption formats). This bug was noticed while reading
4128 4128 code and would not happen under ordinary usage patterns even if
4129 4129 the password contained that character.
4130 4130  
... ... @@ -4134,15 +4134,15 @@
4134 4134 reading and writing. This includes adding method
4135 4135 QPDF::getExtensionLevel and new versions of
4136 4136 QPDFWriter::setMinimumPDFVersion and QPDFWriter::forcePDFVersion
4137   - that support extension levels. The qpdf command-line tool
  4137 + that support extension levels. The qpdf command-line tool
4138 4138 interprets version numbers of the form x.y.z as version x.y at
4139 4139 extension level z.
4140 4140  
4141 4141 * Update AES classes to support use of 256-bit keys.
4142 4142  
4143 4143 * Non-compatible API change: Removed public method
4144   - QPDF::flattenScalarReferences. Instead, just flatten the scalar
4145   - references we actually need to flatten. Flattening scalar
  4144 + QPDF::flattenScalarReferences. Instead, just flatten the scalar
  4145 + references we actually need to flatten. Flattening scalar
4146 4146 references was a wrong decision years ago and has occasionally
4147 4147 caused other problems, among which were that it caused qpdf to
4148 4148 visit otherwise unreferenced and possibly erroneous objects in the
... ... @@ -4187,14 +4187,14 @@
4187 4187 out the omission.
4188 4188  
4189 4189 * Ignore (with warning) non-freed objects in the xref table whose
4190   - offset is 0. Some PDF producers (incorrectly) do this. See
  4190 + offset is 0. Some PDF producers (incorrectly) do this. See
4191 4191 https://bugs.linuxfoundation.org/show_bug.cgi?id=1081.
4192 4192  
4193 4193 2012-09-23 Jay Berkenbilt <ejb@ql.org>
4194 4194  
4195 4195 * Add public methods QPDF::processInputSource and
4196 4196 QPDFWriter::setOutputPipeline to allow users to read from custom
4197   - input sources and to write to custom pipelines. This allows the
  4197 + input sources and to write to custom pipelines. This allows the
4198 4198 maximum flexibility in sources for reading and writing PDF files.
4199 4199  
4200 4200 2012-09-06 Jay Berkenbilt <ejb@ql.org>
... ... @@ -4341,7 +4341,7 @@
4341 4341 2012-06-27 Jay Berkenbilt <ejb@ql.org>
4342 4342  
4343 4343 * Add Pl_Concatenate pipeline for stream concatenation also
4344   - implemented by Tobias Hoffmann. Also added test code
  4344 + implemented by Tobias Hoffmann. Also added test code
4345 4345 (libtests/concatenate.cc).
4346 4346  
4347 4347 * Add new methods implemented by Tobias Hoffmann:
... ... @@ -4365,7 +4365,7 @@
4365 4365 places as well as increasing the amount of padding used when
4366 4366 creating linearized files. Automated tests for large files are
4367 4367 disabled by default. Run ./configure --help for information on
4368   - enabling them. Running the tests requires 11 GB of free disk
  4368 + enabling them. Running the tests requires 11 GB of free disk
4369 4369 space and takes several minutes.
4370 4370  
4371 4371 2012-06-22 Jay Berkenbilt <ejb@ql.org>
... ... @@ -4388,11 +4388,11 @@
4388 4388 * make/libtool.mk: Place user-specified CPPFLAGS and LDFLAGS later
4389 4389 in the compilation so that if a user installs things in a
4390 4390 non-standard place that they have to tell the build about, earlier
4391   - versions of qpdf installed there won't break the build. Thanks to
  4391 + versions of qpdf installed there won't break the build. Thanks to
4392 4392 Macports for reporting this. (Fixes bug 3468860.)
4393 4393  
4394 4394 * Instead of using off_t in the public APIs, use qpdf_offset_t
4395   - instead. This is defined as long long in qpdf/Types.h. If your
  4395 + instead. This is defined as long long in qpdf/Types.h. If your
4396 4396 system doesn't support long long, you can redefine it.
4397 4397  
4398 4398 * Add pkg-config files
... ... @@ -4427,7 +4427,7 @@
4427 4427  
4428 4428 2011-04-06 Jay Berkenbilt <ejb@ql.org>
4429 4429  
4430   - * Fix PCRE to stop using deprecated (and now dropped) interfaces.
  4430 + * Fix PCRE to stop using deprecated (and now dropped) interfaces.
4431 4431  
4432 4432 2011-12-28 Jay Berkenbilt <ejb@ql.org>
4433 4433  
... ... @@ -4459,13 +4459,13 @@
4459 4459 2011-08-10 Jay Berkenbilt <ejb@ql.org>
4460 4460  
4461 4461 * libqpdf/QPDFWriter.cc (copyEncryptionParameters): preserve
4462   - whether metadata is encryption. This fixes part of bug 3173659:
  4462 + whether metadata is encryption. This fixes part of bug 3173659:
4463 4463 the password becomes invalid if qpdf copies an encrypted file with
4464 4464 cleartext-metadata.
4465 4465  
4466 4466 * include/qpdf/QPDFWriter.hh: add a new constructor that takes
4467 4467 only a QPDF reference and leaves specification of output for
4468   - later. Add methods setOutputFilename() to set the output to a
  4468 + later. Add methods setOutputFilename() to set the output to a
4469 4469 filename or stdout, and setOutputMemory() to indicate that output
4470 4470 should go to a memory buffer. Add method getBuffer() to retrieve
4471 4471 the buffer used if output was saved to a memory buffer.
... ... @@ -4485,7 +4485,7 @@
4485 4485 2011-06-23 Jay Berkenbilt <ejb@ql.org>
4486 4486  
4487 4487 * make/libtool.mk (install): Do not strip executables and shared
4488   - libraries during installation. Leave that up to the packager.
  4488 + libraries during installation. Leave that up to the packager.
4489 4489  
4490 4490 * configure.ac: disable -Werror by default.
4491 4491  
... ... @@ -4568,7 +4568,7 @@
4568 4568 * 2.2.0: release
4569 4569  
4570 4570 * Rename README.windows to README-windows.txt and convert its line
4571   - endings to Windows-style line endings. Also mention Jian Ma's VC6
  4571 + endings to Windows-style line endings. Also mention Jian Ma's VC6
4572 4572 port in the manual and README-windows.txt.
4573 4573  
4574 4574 2010-08-09 Jay Berkenbilt <ejb@ql.org>
... ... @@ -4687,7 +4687,7 @@
4687 4687 2009-10-19 Jay Berkenbilt <ejb@ql.org>
4688 4688  
4689 4689 * include/qpdf/QPDF.hh (QPDF): getWarnings now returns a list of
4690   - QPDFExc rather than a list of strings. This way, warnings may be
  4690 + QPDFExc rather than a list of strings. This way, warnings may be
4691 4691 inspected in more detail.
4692 4692  
4693 4693 * Include information about the last object read in most error
... ... @@ -4732,13 +4732,13 @@
4732 4732 2009-09-27 Jay Berkenbilt <ejb@ql.org>
4733 4733  
4734 4734 * Add several methods to query permissions controlled by the
4735   - encryption dictionary. Note that qpdf does not enforce these
  4735 + encryption dictionary. Note that qpdf does not enforce these
4736 4736 permissions even though it allows the user to query them.
4737 4737  
4738 4738 * The function QPDF::getUserPassword returned the user password
4739 4739 with the required padding as specified by the PDF specification.
4740   - This is seldom useful to users. This function has been replaced
4741   - by QPDF::getPaddedUserPassword. Call the new
  4740 + This is seldom useful to users. This function has been replaced
  4741 + by QPDF::getPaddedUserPassword. Call the new
4742 4742 QPDF::getTrimmedUserPassword to retrieve the user password in a
4743 4743 human-readable format.
4744 4744  
... ... @@ -4765,7 +4765,7 @@
4765 4765  
4766 4766 * libqpdf/Pl_LZWDecoder.cc: adjust LZWDecoder full table
4767 4767 detection, now having been able to adequately test boundary
4768   - conditions both and with and without early code change. Also
  4768 + conditions both and with and without early code change. Also
4769 4769 compared implementation with other LZW decoders.
4770 4770  
4771 4771 2009-03-08 Jay Berkenbilt <ejb@ql.org>
... ... @@ -4868,7 +4868,7 @@
4868 4868  
4869 4869 * libqpdf/QPDF_encryption.cc: do not assume size_t is unsigned int
4870 4870  
4871   - * qpdf/qtest/qpdf.test: removed locale-specific tests. These were
  4871 + * qpdf/qtest/qpdf.test: removed locale-specific tests. These were
4872 4872 really to check bugs in perl 5.8.0 and are obsolete now. They
4873 4873 also make the test suite fail in some environments that don't have
4874 4874 all the locales fully configured.
... ...