[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master 26d0f57 1/2: * include/freetype/internal/ftmemory.h (
From: |
Werner LEMBERG |
Subject: |
[freetype2] master 26d0f57 1/2: * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro. |
Date: |
Sat, 23 Nov 2019 04:42:32 -0500 (EST) |
branch: master
commit 26d0f579c01018e2f42250ee48c0250e2e524541
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>
* 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.
---
ChangeLog | 11 +++++++++++
include/freetype/internal/ftmemory.h | 8 ++++++++
2 files changed, 19 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index b921853..23c3595 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2019-11-23 Werner Lemberg <address@hidden>
+
+ * 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.
+
2019-11-23 Ben Wagner <address@hidden>
[sfnt] Ensure OTTO fonts have tables (#57285).
diff --git a/include/freetype/internal/ftmemory.h
b/include/freetype/internal/ftmemory.h
index f0891ae..7a8eeb8 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++,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master 26d0f57 1/2: * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro.,
Werner LEMBERG <=