summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHisham <hisham@gobolinux.org>2016-06-15 12:46:34 -0300
committerHisham <hisham@gobolinux.org>2016-06-15 12:46:34 -0300
commit8cd045cc79d4ae2349e3aa01a1cc122e84759219 (patch)
treee8f4cdc6b536b25415cb3ae375e232b7ba52e5cc
parent0128d222b94adab6b258f417722f298013a33327 (diff)
parent9ec41d1b650f2501d54fcb9429523751c8eaf285 (diff)
Merge branch 'master' of https://github.com/hishamhm/htop
-rw-r--r--XAlloc.c22
-rw-r--r--XAlloc.h19
2 files changed, 36 insertions, 5 deletions
diff --git a/XAlloc.c b/XAlloc.c
index 34a444f2..5f2e9a4b 100644
--- a/XAlloc.c
+++ b/XAlloc.c
@@ -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();
diff --git a/XAlloc.h b/XAlloc.h
index 3cc060d9..eaebb087 100644
--- a/XAlloc.h
+++ b/XAlloc.h
@@ -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

© 2014-2024 Faster IT GmbH | imprint | privacy policy