25087f03f5
Related to: <https://fedoraproject.org/wiki/Changes/PortingToModernC> <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
38 lines
1.7 KiB
Diff
38 lines
1.7 KiB
Diff
Author: Sergei Trofimovich <slyich@gmail.com>
|
||
Date: Wed Dec 6 20:41:57 2023 +0000
|
||
|
||
c/shared/source/t1write/t1write.c: fix u8/u16 type mismatch on dereference (gcc-14)
|
||
|
||
Upcoming `gcc-14` enabled a few warnings into errors, like
|
||
`-Wincompatible-pointer-types`. This caused `afdko` build to fail as:
|
||
|
||
/build/afdko/c/shared/source/t1write/t1write.c: In function ‘saveCstr’:
|
||
/build/afdko/c/shared/source/t1write/t1write.c:348:28: error: passing argument 3 of ‘writeTmp’ from incompatible pointer type [-Wincompatible-pointer-types]
|
||
348 | if (writeTmp(h, 1, &info->iFD))
|
||
| ^~~~~~~~~~
|
||
| |
|
||
| uint16_t * {aka short unsigned int *}
|
||
|
||
The code attempts to use only one byte of 16-bit value. The code very
|
||
likely is broken on a big-endian system.
|
||
|
||
The change explicitly truncates 16-bit value down to 8 bit value to
|
||
retain existing behaviour on both BE and LE systems.
|
||
|
||
Submitted upstream: <https://github.com/adobe-type-tools/afdko/pull/1730>
|
||
|
||
diff --git a/c/public/lib/source/t1write/t1write.c b/c/public/lib/source/t1write/t1write.c
|
||
index e16387408a953c07..b2e4c0df27d36e56 100644
|
||
--- a/c/public/lib/source/t1write/t1write.c
|
||
+++ b/c/public/lib/source/t1write/t1write.c
|
||
@@ -345,7 +345,8 @@ static int saveCstr(t1wCtx h, abfGlyphInfo *info,
|
||
if (info != NULL && info->flags & ABF_GLYPH_CID &&
|
||
!(h->arg.flags & T1W_TYPE_HOST)) {
|
||
/* CID-keyed incremental download; write fd index */
|
||
- if (writeTmp(h, 1, &info->iFD))
|
||
+ unsigned char c = info->iFD;
|
||
+ if (writeTmp(h, 1, &c))
|
||
return 1;
|
||
cstr->length++;
|
||
}
|