forked from minhngoc25a/freetype2
![]() I am currently trying to compile FreeType for CHERI-extended ISAs (CHERI-RISC-V and Arm's Morello), but I am getting compiler warnings from the `FT_UINT_TO_POINTER` macro. When compiling with the CHERI Clang compiler, not using `uinptr_t` for casts between integers an pointers results in the following `-Werror` build failures: ``` In file included from .../src/truetype/truetype.c:22: .../src/truetype/ttgload.c:1925:22: error: cast from provenance-free integer type to pointer type will give pointer that can not be dereferenced [-Werror,-Wcheri-capability-misuse] node->data = FT_UINT_TO_POINTER( glyph_index ); ^ .../include/freetype/internal/compiler-macros.h:79:34: note: expanded from macro 'FT_UINT_TO_POINTER' ``` * include/freetype/internal/compiler-macros.h (FT_UINT_TO_POINTER): The ISO C standard compliant fix for this would be to use `uintptr_t` from `stdint.h`, but I am not sure if this is supported by the minimum compiler version. Therefore, use the compiler-defined `__UINTPTR_TYPE__` macro (supported in GCC 4.6+ and Clang since about 3.0) before checking for `_WIN64` and falling back to `unsigned long`. |
||
---|---|---|
.. | ||
services | ||
autohint.h | ||
cffotypes.h | ||
cfftypes.h | ||
compiler-macros.h | ||
ftcalc.h | ||
ftdebug.h | ||
ftdrv.h | ||
ftgloadr.h | ||
fthash.h | ||
ftmemory.h | ||
ftobjs.h | ||
ftpsprop.h | ||
ftrfork.h | ||
ftserv.h | ||
ftstream.h | ||
fttrace.h | ||
ftvalid.h | ||
psaux.h | ||
pshints.h | ||
sfnt.h | ||
t1types.h | ||
tttypes.h | ||
wofftypes.h |