Files
AnyPS5/docs/dev/debt
KernelPanicNT 55eb035876 feat(libSceFreeType): follow LP64 FreeType for advances and bounding boxes
FT_Get_Advance and FT_Get_Advances no longer throw on hosts with a 32-bit
FT_Fixed when a backend fails part way. The native query runs twice into
buffers prefilled with different values; a slot the bundled FreeType wrote
holds the same value in both runs, so exactly those slots reach the guest,
as on an LP64 build. The call throws if the two runs return different
errors. Advances of 32768 pixels or more still overflow the native 32-bit
arithmetic there and differ from LP64, as the debt entry records.

FT_Outline_Get_BBox now ports the bundled FreeType 2.13.3 ftbbox.c to
64-bit arithmetic, including the LP64 FT_MulDiv wrap and the 32-bit
FT_MSB truncation in cubic_peak, and walks the outline through the
existing FT_Outline_Decompose adapter with shift and delta 0, as upstream
does. Coordinates beyond 32 bits and wide curved outlines no longer throw,
partitions that leave trailing points outside every contour are accepted,
and contours are only read when the walk needs them. Inputs the bundled
source leaves undefined throw std::invalid_argument: null nonempty arrays,
signed overflow, FT_MSB of zero and a negative cubic peak that must be
shifted left. FT_Outline_Decompose now also throws for a contour endpoint
at or beyond n_points instead of reading past the point array.

The wide random bounding-box curves are checked against a digest captured
from native FreeType 2.13.3, so they run on every host and do not depend
on the bundled FreeType version.
2026-10-30 01:26:11 +01:00
..
…