Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About
Login

Console View

Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

Albert Astals Cid
poppler 23.12.0
Albert Astals Cid
Rewrite FoFiType1::parse to be more flexible
Previous code needed Encoding to be at the start of it's own line

The file at issue #1422 doesn't have that and most of the other
renderers show it correctly so we should do the same.

Also the code should be easier to understand now, and probably
faster since we're not copying string around like before
Albert Astals Cid
Update (C)
Oliver Sander
Lexer: Allocate strings on the stack, not on the heap
Makes the code easier to read, and possibly even a bit faster, too.
Oliver Sander
Object: Add constructor from r-value std::string
This can simplify the calling code when the string to use
is stack-allocated.

Unfortunately, the new constructor has to do a heap allocation
internally, because Object stores a pointer to a string,
not a string value.

With the new constructor, construction of Object objects from
std::initializer_list is now ambiguous. This leads to compiler
errors in a few places where {num, gen} is used to initialize
an Object with a Ref object.  The patch replaces this construction
by Ref{num, gen}, which fixes the problem.
Albert Astals Cid
poppler 23.11.0
Albert Astals Cid
Update (C)
Albert Astals Cid
Simple GooString -> std::string change
Albert Astals Cid
Fix crash on broken files
Bug #1441
Anton Thomasson
Use internal downscaling algorithm if image exceeds Cairo's maximum dimensions.
Albert Astals Cid
Use RefRecursionChecker instead std::set
Much simpler code
Albert Astals Cid
Update (C)
Oliver Sander
Remove method GooString::hasJustUnicodeMarker
Because it is used only once, and writing "== unicodeByteOrderMark"
instead is just as short and readable.
Oliver Sander
Move the method sanitizedName from GooString to PDFDoc
Because it is only used by the PDFDoc class, and it does not seem
to be generic enough for a GooString method.

Also, this patch modifies the method to return the string as a
std::string object by value, rather than as a pointer to a
heap-allocated GooString object.  This saves one heap allocation.
Albert Astals Cid
Update (C)
Adrian Johnson
pdftocairo: EPS output should not contain %%PageOrientation
Adrian Johnson
cairo: write document logical structure if output is pdf
Cairo 1.18 can create a tagged pdf. Add support to CairoOutputDev to
copy the logical structure from the input pdf if available.

Added setLogicalStructure() to enable.

Added -struct option to pdftocairo to enable.
Albert Astals Cid
poppler 23.10.0
Sune Vuorela
Check if linker supports version scripts
This is at least not fully supported on solaris.
Albert Astals Cid
CI: Use fedora 39
Albert Astals Cid
CI: Use clang 16
Albert Astals Cid
FoFiType1::parse: Also keep parsing if !gotMatrix
We probably forgot to add it in 876021b1aa16ad38767a91e1be31c392f368fde2
Albert Astals Cid
Use RefRecursionChecker in StructElement
Albert Astals Cid
CI: Add android Qt6 CI
Albert Astals Cid
Update (C)
Albert Astals Cid
Use zu for printf + size_t
Adrian Johnson
cairo: update type 3 fonts for cairo 1.18 api
Albert Astals Cid
CI: -DENABLE_GPGME=OFF for glib_docs
Albert Astals Cid
Make a few more dependencies soft-mandatory
they can be disabled via cmake option
Albert Astals Cid
Update (C)
Albert Astals Cid
FontInfoScanner::scanFonts: Fix infinite recursion on broken files
Albert Astals Cid
Introduce RefRecursionChecker
Albert Astals Cid
Fix DCTStream getting stuck in some broken files
Fixes #1430
Albert Astals Cid
Update (C)
Albert Astals Cid
PDFDoc::savePageAs: Use more unique_ptr
Even Rouault
XRef::reserve(): fix use-after-free and integer overflow on large XRref /Size
This fixes two issues:

- when using greallocn(), and the reallocation failed, the previous
  'entries' array was unexpectedly freed, causing later use-after-free

```
$ (ulimit -v 1000000; valgrind ./utils/pdftoppm -png test.pdf)
Out of memory
==1251090== Invalid read of size 4
==1251090==    at 0x49F685B: Object::free() (poppler/Object.cc:115)
==1251090==    by 0x4A339BB: ~Object (poppler/Object.h:171)
==1251090==    by 0x4A339BB: XRef::resize(int) (poppler/XRef.cc:459)
==1251090==    by 0x4A32E20: XRef::constructXRef(bool*, bool) (poppler/XRef.cc:877)
==1251090==    by 0x4A32CD4: XRef::XRef(BaseStream*, long long, long long, bool*, bool, std::function<void ()> const&) (poppler/XRef.cc:318)
==1251090==    by 0x4A00531: PDFDoc::setup(std::optional<GooString> const&, std::optional<GooString> const&, std::function<void ()> const&) (poppler/PDFDoc.cc:247)
==1251090==    by 0x4A002DB: PDFDoc::PDFDoc(std::unique_ptr<GooString, std::default_delete<GooString> >&&, std::optional<GooString> const&, std::optional<GooString> const&, void*, std::function<void ()> const&) (poppler/PDFDoc.cc:161)
==1251090==    by 0x49F49EA: LocalPDFDocBuilder::buildPDFDoc(GooString const&, std::optional<GooString> const&, std::optional<GooString> const&, void*) (poppler/LocalPDFDocBuilder.cc:0)
==1251090==    by 0x4A1B1E5: PDFDocFactory::createPDFDoc(GooString const&, std::optional<GooString> const&, std::optional<GooString> const&, void*) (poppler/PDFDocFactory.cc:62)
==1251090==    by 0x4035CA: main (utils/pdftoppm.cc:503)
==1251090==  Address 0x6698648 is 24 bytes inside a block of size 40,960 free'd
==1251090==    at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==1251090==    by 0x4927B1C: greallocn(void*, int, int, bool, bool) (goo/gmem.h:0)
==1251090==    by 0x4A33A13: greallocn_checkoverflow (goo/gmem.h:185)
==1251090==    by 0x4A33A13: reserve (poppler/XRef.cc:430)
==1251090==    by 0x4A33A13: XRef::resize(int) (poppler/XRef.cc:446)
==1251090==    by 0x4A32CB5: XRef::XRef(BaseStream*, long long, long long, bool*, bool, std::function<void ()> const&) (poppler/XRef.cc:317)
==1251090==    by 0x4A00531: PDFDoc::setup(std::optional<GooString> const&, std::optional<GooString> const&, std::function<void ()> const&) (poppler/PDFDoc.cc:247)
==1251090==    by 0x4A002DB: PDFDoc::PDFDoc(std::unique_ptr<GooString, std::default_delete<GooString> >&&, std::optional<GooString> const&, std::optional<GooString> const&, void*, std::function<void ()> const&) (poppler/PDFDoc.cc:161)
==1251090==    by 0x49F49EA: LocalPDFDocBuilder::buildPDFDoc(GooString const&, std::optional<GooString> const&, std::optional<GooString> const&, void*) (poppler/LocalPDFDocBuilder.cc:0)
==1251090==    by 0x4A1B1E5: PDFDocFactory::createPDFDoc(GooString const&, std::optional<GooString> const&, std::optional<GooString> const&, void*) (poppler/PDFDocFactory.cc:62)
==1251090==    by 0x4035CA: main (utils/pdftoppm.cc:503)
==1251090==  Block was alloc'd at
==1251090==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==1251090==    by 0x4927ACD: grealloc (goo/gmem.h:77)
==1251090==    by 0x4927ACD: greallocn(void*, int, int, bool, bool) (goo/gmem.h:174)
==1251090==    by 0x4A33A13: greallocn_checkoverflow (goo/gmem.h:185)
==1251090==    by 0x4A33A13: reserve (poppler/XRef.cc:430)
==1251090==    by 0x4A33A13: XRef::resize(int) (poppler/XRef.cc:446)
==1251090==    by 0x4A3344E: XRef::constructXRef(bool*, bool) (poppler/XRef.cc:979)
==1251090==    by 0x4A32BF9: XRef::XRef(BaseStream*, long long, long long, bool*, bool, std::function<void ()> const&) (poppler/XRef.cc:304)
==1251090==    by 0x4A00531: PDFDoc::setup(std::optional<GooString> const&, std::optional<GooString> const&, std::function<void ()> const&) (poppler/PDFDoc.cc:247)
==1251090==    by 0x4A002DB: PDFDoc::PDFDoc(std::unique_ptr<GooString, std::default_delete<GooString> >&&, std::optional<GooString> const&, std::optional<GooString> const&, void*, std::function<void ()> const&) (poppler/PDFDoc.cc:161)
==1251090==    by 0x49F49EA: LocalPDFDocBuilder::buildPDFDoc(GooString const&, std::optional<GooString> const&, std::optional<GooString> const&, void*) (poppler/LocalPDFDocBuilder.cc:0)
==1251090==    by 0x4A1B1E5: PDFDocFactory::createPDFDoc(GooString const&, std::optional<GooString> const&, std::optional<GooString> const&, void*) (poppler/PDFDocFactory.cc:62)
==1251090==    by 0x4035CA: main (utils/pdftoppm.cc:503)
```

- the logic to exponentially resize the capacity of the array was
  relying on undefined behaviour of overflow of int. Change that to
  explictely test the value of the capacity before multiplying by 2.
Albert Astals Cid
PDFDoc::savePageAs: Return cleanly if page is not a dict
Albert Astals Cid
CI: unbreak mingw
Sune Vuorela
More supported gnupg releases
The upcoming 2.2.42 version will have the bugfixes backported for pdf
signatures to work.
Albert Astals Cid
FormField::getFullyQualifiedName: Fix infinite loop on malformed files