freetype2/include/freetype
Ben Wagner f7daf9d293 [stream] Fix reading s32 when long is s64
`FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return
negative values when `long` is more than 32 bits. `FT_Stream_ReadULong`
would read four bytes into the LSB of an `FT_ULong` and return that.
Since this can never set the MSb of the `FT_ULong` when `FT_ULong` is
more than 32 bits the cast to `FT_Long` never resulted in a negative
value.

Fix this by modifying `FT_Stream_Read*` to return a type of the same
size as the bytes it is reading and changing the `FT_READ_*` and
`FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*`
but with the correctly signed type (instead of casting to what is
assumed to be the type of `var` which will happen automatically anyway).

There exist a few cases like with the `OFF3` variants where there isn't
generally a type with the correct size. `FT_PEEK_OFF3` works around this
loading the bytes into the three most significant bits and then doing a
signed shift down. `FT_NEXT_OFF3` also already worked correctly by
casting this signed value to another signed type. `FT_Stream_GetUOffset`
works correctly but one must be careful not to attempt to cast the
returned value to a signed type. Fortunately there is only
`FT_GET_UOFF3` and no `FT_GET_OFF3`.

All of these cases are handled correctly when reading values through
`FT_Stream_ReadFields` since it generically computes the signed value
through an `FT_Int32`. This change is essentially doing the same for
these macros.

* include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*):
Update macros and return types to use fixed size types for fixed size
values.

* src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito.

Issue: #1161
2022-06-18 12:58:23 -04:00
..
config Add 'svg' module for OT-SVG rendering. 2022-01-20 16:45:18 +00:00
internal [stream] Fix reading s32 when long is s64 2022-06-18 12:58:23 -04:00
freetype.h [svg] Set linear advances when loading SVG glyphs 2022-06-06 16:55:17 -04:00
ftadvanc.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftbbox.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftbdf.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftbitmap.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftbzip2.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftcache.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftchapters.h More documentation on handling OT-SVG. 2022-01-23 12:23:47 +01:00
ftcid.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftcolor.h [sfnt] Correct FT_ColorStopIterator documentation. 2022-04-04 15:28:54 -04:00
ftdriver.h More documentation on handling OT-SVG. 2022-01-23 12:23:47 +01:00
fterrdef.h Add 'svg' module for OT-SVG rendering. 2022-01-20 16:45:18 +00:00
fterrors.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftfntfmt.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftgasp.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftglyph.h Various minor doc fixes. 2022-02-06 21:06:52 +01:00
ftgxval.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftgzip.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftimage.h [doc] FT_OUTLINE_OVERLAP was introduced in 2.10.3. 2022-03-19 06:20:53 +00:00
ftincrem.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftlcdfil.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftlist.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftlogging.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftlzw.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftmac.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftmm.h ftmm.h: Minor documentation improvement. 2022-02-16 14:51:44 +01:00
ftmodapi.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftmoderr.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftotval.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftoutln.h Document `FT_Outline_Decompose` degenerate segments. 2022-01-27 21:49:47 +01:00
ftparams.h Add `FT_PARAM_TAG_IGNORE_SBIX`. 2022-03-25 06:37:41 +00:00
ftpfr.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftrender.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftsizes.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftsnames.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftstroke.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftsynth.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftsystem.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
fttrigon.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
fttypes.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
ftwinfnt.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
otsvg.h * src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers. 2022-01-23 19:05:15 +01:00
t1tables.h t1tables.h: Documentation improvements. 2022-02-12 07:58:43 +01:00
ttnameid.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
tttables.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
tttags.h Add code to load OT-SVG glyph documents. 2022-01-20 16:45:18 +00:00