-
...and include ObjectHandle.hh first in QPDFObjectHandle so there is at least one place (other than check_abi get-sizes) that includes it first.
-
- Add missing export for operator QPDFObjGen. - Fix handling of indirect references. The use of the type_code method in various switch statements bypassed the special handling of ::ot_reference objects. Replace with new method resolved_type_code. Add tests for ::ot_reference objects.
-
Enhance error checking of object stream object ids and offsets
-
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.
-
Also remove some shared pointers and use std::string instead of Pl_Buffer in Pl_QPDFTokenizer.
-
Update release notes and reverse making QPDFObjectHandle final
-
and delay to qpdf 13 to give users notice of the change.
-
Remove remaining QPDFTokenizer private methods. Remove QPDFTokenizer privileged access to Tokenizer.
-
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
-
Clean up comments in QPDFObject.hh
-
Move all stream-specific methods to new class qpdf::Stream
-
Move all array-specific methods to new class qpdf::Array.
-
Move all dictionary specific methods to BaseDictionary. Create new subclass Dictionary to allow QPDFObjectHandle to access the moved methods.
-
Replace data member oh with accessors. Remove redundant overloads from QPDFObjGen::set.
-
The new class is only usable as base classes and does not support direct instantiation or upcasting. Add operators to convert to bool, QPDFObjectHandle and QPDFObjGen. Derive QPDFObjectHandle from BaseHandle and make final.
-
Tune JSON::JSON_string
-
Remove member encoded and encode strings only when required. Encoded is only used when writing JSON. Since most JSON writing is now done on the fly without creating a JSON representation, creating and storing the encoded string in almost all cases no longer serves any purpose.
-
Push mode is not used by qpdf and is not tested. It is difficult to see a legitimate use for it. Continuing to support it creates unnecessary constraints and effort when adapting the tokenizer.
-
If duplicate keys are encountered, overwrite earlier values with the latest value.
-
Except for virtual functions to avoid the need for users to update code.