summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2019-11-23 10:28:37 +0100
committerWerner Lemberg <wl@gnu.org>2019-11-23 10:28:37 +0100
commit26d0f579c01018e2f42250ee48c0250e2e524541 (patch)
treeb4f08312fb962546f4d8df313a6d555a6c64f45c /include
parent9b0179597e100e85d543b4e346490ed7b2bb2fff (diff)
downloadfreetype2-26d0f579c01018e2f42250ee48c0250e2e524541.tar.gz
* include/freetype/internal/ftmemory.h (FT_OFFSET): New macro.
Use this for `base + offset' pointer calculations where `base' can be NULL (triggering a sanitizer warning even if the resulting pointer gets never dereferenced since it is undefined behaviour in C). Suggested by Ben Wagner.
Diffstat (limited to 'include')
-rw-r--r--include/freetype/internal/ftmemory.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/freetype/internal/ftmemory.h b/include/freetype/internal/ftmemory.h
index f0891ae09..7a8eeb8ac 100644
--- a/include/freetype/internal/ftmemory.h
+++ b/include/freetype/internal/ftmemory.h
@@ -57,6 +57,14 @@ FT_BEGIN_HEADER
/*************************************************************************/
+ /* The calculation `NULL + n' is undefined in C. Even if the resulting */
+ /* pointer doesn't get dereferenced, this causes warnings with */
+ /* sanitizers. */
+ /* */
+ /* We thus provide a macro that should be used if `base' can be NULL. */
+#define FT_OFFSET( base, count ) ( (base) ? (base) + (count) : NULL )
+
+
/*
* C++ refuses to handle statements like p = (void*)anything, with `p' a
* typed pointer. Since we don't have a `typeof' operator in standard C++,