diff options
author | Hisham <hisham@gobolinux.org> | 2016-06-15 12:46:34 -0300 |
---|---|---|
committer | Hisham <hisham@gobolinux.org> | 2016-06-15 12:46:34 -0300 |
commit | 8cd045cc79d4ae2349e3aa01a1cc122e84759219 (patch) | |
tree | e8f4cdc6b536b25415cb3ae375e232b7ba52e5cc | |
parent | 0128d222b94adab6b258f417722f298013a33327 (diff) | |
parent | 9ec41d1b650f2501d54fcb9429523751c8eaf285 (diff) |
Merge branch 'master' of https://github.com/hishamhm/htop
-rw-r--r-- | XAlloc.c | 22 | ||||
-rw-r--r-- | XAlloc.h | 19 |
2 files changed, 36 insertions, 5 deletions
@@ -10,6 +10,7 @@ #include <string.h> /*{ +#include <assert.h> #include <stdlib.h> }*/ @@ -43,10 +44,23 @@ void* xRealloc(void* ptr, size_t size) { return data; } -char* xStrdup(const char* str) { - if (!str) { - fail(); - } +#undef xStrdup +#undef xStrdup_ +#ifdef NDEBUG +# define xStrdup_ xStrdup +#else +# define xStrdup(str_) (assert(str_), xStrdup_(str_)) +#endif + +#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 // __has_attribute(nonnull) || GNU C 3.3 or later + +char* xStrdup_(const char* str) { char* data = strdup(str); if (!data) { fail(); @@ -7,6 +7,7 @@ #define _GNU_SOURCE #endif +#include <assert.h> #include <stdlib.h> void* xMalloc(size_t size); @@ -15,6 +16,22 @@ void* xCalloc(size_t nmemb, size_t size); void* xRealloc(void* ptr, size_t size); -char* xStrdup(const char* str); +#undef xStrdup +#undef xStrdup_ +#ifdef NDEBUG +# define xStrdup_ xStrdup +#else +# define xStrdup(str_) (assert(str_), xStrdup_(str_)) +#endif + +#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 // __has_attribute(nonnull) || GNU C 3.3 or later + +char* xStrdup_(const char* str); #endif |