Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
oss-fuzz/11195
|
|
|
|
interface intact.
The approach is slightly different to GooList as it reimplements GooString in terms of
std::string but keeps its interface intact and does expose any std::string functionality
as of now.
This is done since GooString has a significantly larger API surface and exposing both API
would be quite confusing with with some overloads from GooString and some from std::string
being visible. But it does mean we can align the API (they are already pretty close) and
expose new things like a reserve method piece by piece.
It also already helps in that the implementation of GooString is gone except for the
original parts, i.e. the formatting, and we have zero cost conversion from/to std::string
which should help in making more use of it elsewhere. It also gives us do-nothing-access
to optimizations done for the standard library, e.g. word-level implementations of
cmp and friends.
(Note that the resulting GooString.cc is a bit funny as the formatting helper are now
local to the translation unit, but I had to redeclare them to keep the diff small as
I did not change them at all. But if this is done, they could probably just be moved to
where the declarations are to make the source file more readable.)
|
|
|
|
|
|
The GIDL format was the pre-cursor to the GObject Introspection
Repository (GIR) format. Poppler has used GIR for a long time now.
|
|
|
|
system via FUZZER CMake variable.
|
|
|
|
These are just non-standard names for bool, true, false, respectively.
Getting rid of these names saves on layer of mental redirection,
and enables proper syntax highlighting in editors.
|
|
Removing localtime_r allows the demo to be built on Windows.
|
|
|
|
dnf replaced yum a few releases ago.
|
|
There's no reason it can't be available (either natively, or when
cross-compiling with mingw).
|
|
We only support lcms2 for a while
|
|
|
|
https://gitlab.freedesktop.org/poppler/poppler/issues/647
|
|
|
|
|
|
|
|
|
|
PDF/A as can be tested with VeraPDF requires:
- Second line needs to be a comment line with four characters with byte encoding above 127
- "obj" needs to be followed by a new line
- "endobj" needs to start on a new line
|
|
|
|
poppler-glib exported lots of internal C++ symbols
that are not in the public API, nor have any ABI
guarantees.
Mark all public functions with POPPLER_PUBLIC, and
use symbol visibility to hide everything else.
|
|
pdf-inspector doesn't use libpoppler-glib, but linked to it.
Changing it to link only to libpoppler revealed that it
used lots of symbols from poppler-glib that poppler-glib
should not export. Fix that by adding the necessary sources
to the pdf-inspector sources and linking to the libraries
needed by these sources (freetype, pthreads).
|
|
Export PDFSubtype, PDFSubtypePart, and PDFSubtypeConformance
to GLib as enums and add function to get the GTS string based
on the PDF Subtype.
Add PDF Subtype documentation reference in glib.
|
|
oss-fuzz/11020
|
|
Check whether an embedded file is actually present in the PDF
and show warning in that case.
https://bugs.freedesktop.org/show_bug.cgi?id=106137
https://gitlab.freedesktop.org/poppler/poppler/issues/236
|
|
|
|
oss-fuzz/11006
|
|
An application using ArthurBackend can be subject to multi threading.
So better use a copy of XRef during rendering, just the same as it's
already done when using SplashBackend.
|
|
The majority of the code in addIntersection can be optimized away for
vertical (x0 == x1) and horizontal (count == 0) segments, thus the inlined
code is less than the function call setup alone.
This leaves diagonal segments as the only remaining call site, i.e.
inlining here is a net win as well.
Reduces runtime for #57 (fdo#96728, runsforever-poppler.pdf) from 1442 seconds
to 1239 seconds (86%), and #24 (fdo#78728, surf-types.pdf) from ~ 5.0 seconds
to 4.7 seconds.
|
|
"seg->x0 - seg->y0 * seg->dxdy" is constant and can be moved out of the
loop.
The next start point is the old end point. Thus, only the new x coordinate
has to clamped (segXMin <= xx1 <= segXMax), also do the 'floor' operation
just once per loop.
According to valgrind/callgrind, this reduces instruction count in
computeIntersections() for #24 (fdo#78728) by 6%. No change for fdo#96728.
|
|
For horizontal segments, count is always 0. For vertical/diagonal segments,
the count depends on the winding rule (EvenOdd/NonZero) and the direction,
but is constant for each segment.
Reduces runtime for #57 (fdo#96728) from 1773 seconds to 1442 seconds (81%).
|
|
XRef::constructXRef was invented to support old style XRef tables.
Sadly it won't work for XRef streams. If applied anyway, it corrupts our
existing XRef::entries array. Better skip reconstruction for the XRef-stream-case
in XRef::readXRefUntil (just like XRef::fetch already does).
Fixes #139.
|
|
GCC recommends not using them for a long time and its documentation says:
> These #pragmas have been superceded as of GCC 2.7.2 by COMDAT support
> and the “key method” heuristic mentioned in Vague Linkage.
> Using them can actually cause your program to grow due to
> unnecessary out-of-line copies of inline functions.
Also nobody seems to set USE_GCC_PRAGMAS and sometimes they were
guarded by just __GNUC__ which upsets Clang.
|
|
|
|
|
|
std::vector and std::unique_ptr instead of manually allocating them. oss-fuzz/10119
|
|
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<AnnotCoord> to further avoid manual memory management.
|
|
No need to set a std::unique_ptr to nullptr right before
it goes out of scope.
|