aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_optimization.cc
AgeCommit message (Collapse)Author
2019-01-04Don't call assert while checking linearization data (fixes #209, #231)Jay Berkenbilt
Instead of calling assert for problems found during checking linearization data, throw an exception which is later caught and issued as an error. Ideally we would handle errors more robustly, but this is still a significant improvement.
2017-08-22Push QPDF member variables into a nested classJay Berkenbilt
Pushing member variables into a nested class enables addition of new member variables without breaking binary compatibility.
2015-02-22Detect loops in /Pages structureJay Berkenbilt
Pushing inherited objects to pages and getting all pages were both prone to stack overflow infinite loops if there were loops in the Pages dictionary. There is a general weakness in the code in that any part of the code that traverses the Pages structure would be prone to this and would have to implement its own loop detection. A more robust fix may provide some general method for handling the Pages structure, but it's probably not worth doing. Note: addition of *Internal2 private functions was done rather than changing signatures of existing methods to avoid breaking compatibility.
2013-10-18Security: replace operator[] with atJay Berkenbilt
For std::string and std::vector, replace operator[] with at. This was done using an automated process. See README.hardening for details.
2013-06-15Handle /Outlines dictionary being a direct objectJay Berkenbilt
Even though this case is not valid according to the spec, it has been seen, and caused an internal error.
2013-06-14Use QPDFObjectHandle::getObjGen() where appropriateJay Berkenbilt
In internal code and examples, replace calls to getObjectID() and getGeneration() with calls to getObjGen() where possible.
2013-06-14Promote QPDF::ObjGen to top-level object QPDFObjGenJay Berkenbilt
2013-03-04Remove all old-style casts from C++ codeJay Berkenbilt
2012-12-31Eliminate flattenScalarReferencesJay Berkenbilt
2012-07-22Windows compilation fixesJay Berkenbilt
2012-07-11Support copying objects from another QPDF objectJay Berkenbilt
This includes QPDF::copyForeignObject and supporting foreign objects as arguments to addPage*.
2012-07-07Build this->all_pages while traversing with pushInheritedAttributesToPageTobias Hoffmann
2012-07-05Limited inheritance to the attributes explicitly listed in the PDF specTobias Hoffmann
Previous versions of qpdf incorrectly passed arbitrary objects from /Pages objects down to individual pages in direct contradition with the PDF specification. These are now left in /Pages. When intermediate /Pages nodes are being discarded as when the /Pages tree is being flattened, a warning is issued when unknown keys are encountered.
2012-07-04Added public method QPDF::pushInheritedAttributesToPageTobias Hoffmann
Refactored optimizePagesTree to pushInheritedAttributesToPage and made public
2012-06-22Add QPDF::emptyPDF() and pdf_from_scratch test codeJay Berkenbilt
2012-06-21Refactor optimizePagesTreeJay Berkenbilt
Split optimizePagesTree into a simpler top-level routine and a recursive internal routine.
2012-06-21Fix typo in commentJay Berkenbilt
2012-06-21fix doc commentJay Berkenbilt
2010-09-24convert file to a PointerHolder<InputSource> so it could be either a file or ↵Jay Berkenbilt
a buffer; also fix a bug in BufferInputSource::seek git-svn-id: svn+q:///qpdf/trunk@1030 71b93d88-0707-0410-a8cf-f5a4172ac649
2010-06-05eliminate extraneous allocations by not calling makeDirect when weJay Berkenbilt
know an object is already direct git-svn-id: svn+q:///qpdf/trunk@972 71b93d88-0707-0410-a8cf-f5a4172ac649
2010-03-27flatten scalar references for unreferenced objectsJay Berkenbilt
git-svn-id: svn+q:///qpdf/trunk@946 71b93d88-0707-0410-a8cf-f5a4172ac649
2009-10-20categorize all error messages and include object information if availableJay Berkenbilt
git-svn-id: svn+q:///qpdf/trunk@829 71b93d88-0707-0410-a8cf-f5a4172ac649
2009-10-12do DLL_EXPORT only in header files and only at the class or top-level ↵Jay Berkenbilt
function level git-svn-id: svn+q:///qpdf/trunk@796 71b93d88-0707-0410-a8cf-f5a4172ac649
2009-09-26removed qexc; non-compatible ABI changeJay Berkenbilt
git-svn-id: svn+q:///qpdf/trunk@709 71b93d88-0707-0410-a8cf-f5a4172ac649
2009-08-06stick DLL_EXPORT in front of every public method of every public classJay Berkenbilt
git-svn-id: svn+q:///qpdf/trunk@688 71b93d88-0707-0410-a8cf-f5a4172ac649
2008-04-29update release date to actual daterelease-qpdf-2.0Jay Berkenbilt
git-svn-id: svn+q:///qpdf/trunk@599 71b93d88-0707-0410-a8cf-f5a4172ac649