diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2021-09-24 03:48:09 +0000 |
---|---|---|
committer | Alexei Podtelezhnikov <apodtele@gmail.com> | 2021-09-24 03:48:09 +0000 |
commit | eaa216ea77bc2fe222b47ea13cee8fcdeba01161 (patch) | |
tree | a95b6d7adf031325595fdee74da43f8bc2db5fd8 | |
parent | a29e020059ca6f73a212ec76af94b22a694ad765 (diff) | |
download | freetype2-signed_OFF3.tar.gz |
Signed 24-bit values need sign expansion into 32 bits. Only PFR driver, only in bitmap strikes, and
signed_OFF3
only conditionally uses the signed 24-bit values to specify the bitmap positioning and advance.
Therefore this bug could never be captured.
-rw-r--r-- | include/freetype/internal/ftstream.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/include/freetype/internal/ftstream.h b/include/freetype/internal/ftstream.h index 72dd58517..187eaa6c5 100644 --- a/include/freetype/internal/ftstream.h +++ b/include/freetype/internal/ftstream.h @@ -196,9 +196,9 @@ FT_BEGIN_HEADER FT_BYTE_U32( p, 2, 8 ) | \ FT_BYTE_U32( p, 3, 0 ) ) -#define FT_PEEK_OFF3( p ) FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \ - FT_BYTE_U32( p, 1, 8 ) | \ - FT_BYTE_U32( p, 2, 0 ) ) +#define FT_PEEK_OFF3( p ) ( FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) ) >> 8 ) #define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \ FT_BYTE_U32( p, 1, 8 ) | \ @@ -220,9 +220,9 @@ FT_BEGIN_HEADER FT_BYTE_U32( p, 1, 8 ) | \ FT_BYTE_U32( p, 0, 0 ) ) -#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \ - FT_BYTE_U32( p, 1, 8 ) | \ - FT_BYTE_U32( p, 0, 0 ) ) +#define FT_PEEK_OFF3_LE( p ) ( FT_INT32( FT_BYTE_U32( p, 2, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 0, 8 ) ) >> 8 ) #define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \ FT_BYTE_U32( p, 1, 8 ) | \ |