diff options
author | Explorer09 <explorer09@gmail.com> | 2016-06-03 10:14:27 +0800 |
---|---|---|
committer | Explorer09 <explorer09@gmail.com> | 2016-06-03 10:14:27 +0800 |
commit | c0e37bc5f50497d422f25bb82f3396168eb146a2 (patch) | |
tree | 0deb10900400a64bf69bd7e4ce6241e84f115dd3 /XAlloc.c | |
parent | f9c1db514d078fa0cc73d62cdd25fcf49e9b071f (diff) |
Fix xStrdup debug build failure & allow Clang to use ((nonnull))
Diffstat (limited to 'XAlloc.c')
-rw-r--r-- | XAlloc.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -5,12 +5,12 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif -#include <assert.h> #include <err.h> #include <stdlib.h> #include <string.h> /*{ +#include <assert.h> #include <stdlib.h> }*/ @@ -52,9 +52,13 @@ void* xRealloc(void* ptr, size_t size) { # define xStrdup(str_) (assert(str_), xStrdup_(str_)) #endif -#if ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) +#ifndef __has_attribute // Clang's macro +# define __has_attribute(x) 0 +#endif +#if (__has_attribute(nonnull) || \ + ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))) char* xStrdup_(const char* str) __attribute__((nonnull)); -#endif // GNU C 3.3 or later +#endif // __has_attribute(nonnull) || GNU C 3.3 or later char* xStrdup_(const char* str) { char* data = strdup(str); |