summaryrefslogtreecommitdiffstats
path: root/XAlloc.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2016-06-02 17:29:14 -0300
committerHisham Muhammad <hisham@gobolinux.org>2016-06-02 17:29:14 -0300
commitf9c1db514d078fa0cc73d62cdd25fcf49e9b071f (patch)
treee5661e72fb9cae414df136681926bac51b27eac4 /XAlloc.c
parentea9dc4ab744127f678c75c4ffeb999f5ec491d50 (diff)
parent3297616efa05565b7944a83b11a9aabcdde08986 (diff)
Merge pull request #504 from Explorer09/xStrdup
Fixes upon xStrdup(NULL) problem
Diffstat (limited to 'XAlloc.c')
-rw-r--r--XAlloc.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/XAlloc.c b/XAlloc.c
index 34a444f2..5bda74ed 100644
--- a/XAlloc.c
+++ b/XAlloc.c
@@ -5,6 +5,7 @@
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
+#include <assert.h>
#include <err.h>
#include <stdlib.h>
#include <string.h>
@@ -43,10 +44,19 @@ 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
+
+#if ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+char* xStrdup_(const char* str) __attribute__((nonnull));
+#endif // GNU C 3.3 or later
+
+char* xStrdup_(const char* str) {
char* data = strdup(str);
if (!data) {
fail();

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