-
…prove encapsulation, and streamline stream data handling.
-
…eamline foreign object handling, and simplify method structure.
-
…`Copier` usage, and simplify object copying logic.
-
…ne object copying logic, and simplify method structure.
-
…object reservation, and streamline method usage.
-
…rect_object`, simplify object replacement, and streamline method usage.
-
…eamline type-specific handling, and remove redundant test coverage evaluations.
-
…t usage of `std::shared_ptr`, simplify stream data management, and enforce `final` specifier.
-
… `StreamDataProvider` management.
-
Replace `getParsedOffset()` with the new `offset()` method across `QPDFObjectHandle` and related classes for consistent offset handling. Simplify logic and remove redundant `getParsedOffset()` implementation.
-
…proved encapsulation.
-
Encapsulate linearization-related logic in `QPDF::Doc::Linearization`. Refactor methods, relocate implementations, and update all references accordingly to streamline and centralize linearization functionality.
-
Relocate `Pages` methods to `QPDF::Doc` for improved encapsulation of page-related logic. Adjust all references and methods to use the new placement.
-
Relocate `Objects` to `QPDF::Doc` for improved encapsulation of object-related logic. Adjust all relevant methods and references to use the new placement.
-
Add `QPDF::Doc` as an inner class to manage document-level functionality. Update memory management in `QPDF::Members` to include `Doc` and ensure proper initialization. Add `QPDF::doc()` method for internal access. Refactor constructors accordingly.
-
…ance error and warning handling within `BaseHandle` and `QPDF`, highlighting that the error condition is not covered in CI testing without generating codecov noise.
-
…emove redundant `QTC::TC` calls.
-
…ity, and replace deprecated API usage.
-
…std::string_view`, improving performance and code clarity.
-
Converted multiple occurrences of `count()` to `contains()` throughout the codebase where the goal was to check key existence in containers. This improves code readability and aligns with modern C++ practices, particularly with C++20, making the intent more explicit and potentially aiding performance.
-
Only top-level XMP metadata is supposed to be left unencrypted. All other metadata is not treated specially.
-
Internally use -1 to represent a missing offset and provide a constructor overload that allows 0 as a valid offset. In QPDF::damagedPDF use the new overload.
-
Move methods responsible for loading or keeping track of objects to QPDF_objects.cc. The split was part of the reverted #1297. Reintroducing it now makes it easier/safer to keep the work to refactor the xref and object tables in sync with main.
-
Refine recovery from missing startxref (fixes #1335)
-
Refactor xref table reconstruction (Fixes #1362)
-
If startxref cannot be found in the last 1024 try finding it in the whole file and check whether it is valid.
-
Split reconstruction into three passes - scanning of input for objects and trailer, insertion of objects into the xref table, and loading the trailer. This allows insertion to take place in the usual reverse order and removes the need for a separate insertReconstructedXrefEntry method. It also allows trailer to be tried from most recent to oldest. Ignore any found trailers without /Root entry.
-
The original test file contains multiple entries with id 0 and offset 0. One entry has been modified such that the id is valid (6). Object streams with invalid offsets are a source of unreproduceable oss-fuzz time-outs.
-
Modernise constructors, make classes final, etc.
-
Add new private Util.hh header to define inline functions and expose as ordinary functions in QUtil.
-
- Remove unnecessary QPDF_DLLs - make deleted constructors public - move some comments to support tooltips - modernise some constructors and destructors - change some member shared pointers to unique pointers