浏览代码

Merge branch 'stb_sprintf-asan' of https://github.com/h-s-c/stb into work2

Sean Barrett 5 年之前
父节点
当前提交
c716696e28
共有 1 个文件被更改,包括 21 次插入8 次删除
  1. 21 8
      stb_sprintf.h

+ 21 - 8
stb_sprintf.h

@@ -18,6 +18,7 @@
 //    Leonard Ritter
 //    Stefano Zanotti
 //    Adam Allison
+//    Kevin Schmidt
 //
 // LICENSE:
 //
@@ -139,25 +140,37 @@ PERFORMANCE vs MSVC 2008 32-/64-bit (GCC is even slower than MSVC):
 "...512 char string..." ( 35.0x/32.5x faster!)
 */
 
-#if defined(__has_feature)
-   #if __has_feature(address_sanitizer)
-      #define STBI__ASAN __attribute__((no_sanitize("address")))
+#if defined(__clang__)
+ #if defined(__has_feature) && defined(__has_attribute)
+  #if __has_feature(address_sanitizer)
+   #if __has_attribute(__no_sanitize__)
+    #define STBSP__ASAN __attribute__((__no_sanitize__("address")))
+   #elif __has_attribute(__no_sanitize_address__)
+    #define STBSP__ASAN __attribute__((__no_sanitize_address__))
+   #elif __has_attribute(__no_address_safety_analysis__)
+    #define STBSP__ASAN __attribute__((__no_address_safety_analysis__))
    #endif
+  #endif
+ #endif
+#elif __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+ #if __SANITIZE_ADDRESS__
+  #define STBSP__ASAN __attribute__((__no_sanitize_address__))
+ #endif
 #endif
-#ifndef STBI__ASAN
-#define STBI__ASAN
+#ifndef STBSP__ASAN
+#define STBSP__ASAN
 #endif
 
 #ifdef STB_SPRINTF_STATIC
 #define STBSP__PUBLICDEC static
-#define STBSP__PUBLICDEF static STBI__ASAN
+#define STBSP__PUBLICDEF static STBSP__ASAN
 #else
 #ifdef __cplusplus
 #define STBSP__PUBLICDEC extern "C"
-#define STBSP__PUBLICDEF extern "C" STBI__ASAN
+#define STBSP__PUBLICDEF extern "C" STBSP__ASAN
 #else
 #define STBSP__PUBLICDEC extern
-#define STBSP__PUBLICDEF STBI__ASAN
+#define STBSP__PUBLICDEF STBSP__ASAN
 #endif
 #endif