From 42287213519d1fc5a659206959a928c0f83cdda0 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 5 Feb 2016 14:19:14 -0600 Subject: [PATCH] Enable running when built with Clang's -fsanitize=address --- src/autosegs.h | 6 ++++-- src/dobjtype.cpp | 2 +- src/doomtype.h | 10 ++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/autosegs.h b/src/autosegs.h index 61872610c..f62632139 100644 --- a/src/autosegs.h +++ b/src/autosegs.h @@ -35,6 +35,8 @@ #ifndef AUTOSEGS_H #define AUTOSEGS_H +#include "doomtype.h" + #define REGMARKER(x) (x) typedef void * const REGINFO; typedef void * NCREGINFO; @@ -73,11 +75,11 @@ class FAutoSegIterator } Probe = Head; } - NCREGINFO operator*() const + NCREGINFO operator*() const NO_SANITIZE { return *Probe; } - FAutoSegIterator &operator++() + FAutoSegIterator &operator++() NO_SANITIZE { do { diff --git a/src/dobjtype.cpp b/src/dobjtype.cpp index cc0a077f2..d9af4044a 100644 --- a/src/dobjtype.cpp +++ b/src/dobjtype.cpp @@ -1986,7 +1986,7 @@ END_POINTERS // //========================================================================== -static int STACK_ARGS cregcmp (const void *a, const void *b) +static int STACK_ARGS cregcmp (const void *a, const void *b) NO_SANITIZE { const PClass *class1 = *(const PClass **)a; const PClass *class2 = *(const PClass **)b; diff --git a/src/doomtype.h b/src/doomtype.h index 06541f526..0d9a13ff4 100644 --- a/src/doomtype.h +++ b/src/doomtype.h @@ -113,6 +113,16 @@ typedef TMap FClassMap; #define NOVTABLE #endif +#if defined(__clang__) +#if defined(__has_feature) && __has_feature(address_sanitizer)) +#define NO_SANITIZE __attribute__((no_sanitize("address"))) +#else +#define NO_SANITIZE +#endif +#else +#define NO_SANITIZE +#endif + #include "basictypes.h" // Bounding box coordinate storage.