diff options
-rw-r--r-- | src/string.cpp | 4 | ||||
-rw-r--r-- | src/string_func.h | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/string.cpp b/src/string.cpp index 58ac00a6c..4ed2da129 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -398,7 +398,7 @@ size_t Utf8TrimString(char *s, size_t maxlen) return length; } -#ifndef _GNU_SOURCE +#ifdef DEFINE_STRNDUP #include "core/math_func.hpp" char *strndup(const char *s, size_t len) { @@ -407,7 +407,7 @@ char *strndup(const char *s, size_t len) memcpy(tmp, s, len); return tmp; } -#endif /* !_GNU_SOURCE */ +#endif /* DEFINE_STRNDUP */ #ifdef DEFINE_STRCASESTR char *strcasestr(const char *haystack, const char *needle) diff --git a/src/string_func.h b/src/string_func.h index 7787ee57c..f921397a0 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -251,10 +251,13 @@ static inline bool IsWhitespace(WChar c) #include <sys/param.h> #endif -#if !defined(_GNU_SOURCE) && !(defined(__NetBSD_Version__) && 400000000 < __NetBSD_Version__ ) /* strndup is a GNU extension */ +#if defined(_GNU_SOURCE) || (defined(__NetBSD_Version__) && 400000000 <= __NetBSD_Version__) +# undef DEFINE_STRNDUP +#else +# define DEFINE_STRNDUP char *strndup(const char *s, size_t len); -#endif /* !_GNU_SOURCE */ +#endif /* strndup is available */ /* strcasestr is available for _GNU_SOURCE, BSD and some Apple */ #if defined(_GNU_SOURCE) || (defined(__BSD_VISIBLE) && __BSD_VISIBLE) || (defined(__APPLE__) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))) || defined(_NETBSD_SOURCE) |