freetype-commit
[Top][All Lists]
Advanced

[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++,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]