diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-11-24 21:42:55 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-11-24 21:42:55 -0500 |
commit | c8a9c22173f485c8c053709e1dfa0a617cb6be1a (patch) | |
tree | 6e09d7e73bbff957b45370d412cc6299fe51eb37 /include | |
parent | 7e771e62e78944b9d1fe7e78ef71422b9d51f275 (diff) | |
download | musl-c8a9c22173f485c8c053709e1dfa0a617cb6be1a.tar.gz musl-c8a9c22173f485c8c053709e1dfa0a617cb6be1a.tar.bz2 musl-c8a9c22173f485c8c053709e1dfa0a617cb6be1a.tar.xz musl-c8a9c22173f485c8c053709e1dfa0a617cb6be1a.zip |
restore type of NULL to void * except when used in C++ programs
unfortunately this eliminates the ability of the compiler to diagnose
some dangerous/incorrect usage, but POSIX requires (as an extension to
the C language, i.e. CX shaded) that NULL have type void *. plain C
allows it to be defined as any null pointer constant.
the definition 0L is preserved for C++ rather than reverting to plain
0 to avoid dangerous behavior in non-conforming programs which use
NULL as a variadic sentinel. (it's impossible to use (void *)0 for C++
since C++ lacks the proper implicit pointer conversions, and other
popular alternatives like the GCC __null extension seem non-conforming
to the standard's requirements.)
Diffstat (limited to 'include')
-rw-r--r-- | include/locale.h | 4 | ||||
-rw-r--r-- | include/stddef.h | 4 | ||||
-rw-r--r-- | include/stdio.h | 4 | ||||
-rw-r--r-- | include/stdlib.h | 4 | ||||
-rw-r--r-- | include/string.h | 4 | ||||
-rw-r--r-- | include/time.h | 5 | ||||
-rw-r--r-- | include/unistd.h | 4 | ||||
-rw-r--r-- | include/wchar.h | 4 |
8 files changed, 33 insertions, 0 deletions
diff --git a/include/locale.h b/include/locale.h index 7e80fd93..ce384381 100644 --- a/include/locale.h +++ b/include/locale.h @@ -7,7 +7,11 @@ extern "C" { #include <features.h> +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #define LC_CTYPE 0 #define LC_NUMERIC 1 diff --git a/include/stddef.h b/include/stddef.h index 9d522486..0a329190 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -1,7 +1,11 @@ #ifndef _STDDEF_H #define _STDDEF_H +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #define __NEED_ptrdiff_t #define __NEED_size_t diff --git a/include/stdio.h b/include/stdio.h index cd60bb55..884d2e6a 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -21,7 +21,11 @@ extern "C" { #include <bits/alltypes.h> +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #undef EOF #define EOF (-1) diff --git a/include/stdlib.h b/include/stdlib.h index 2bd5f102..1e67b896 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -7,7 +7,11 @@ extern "C" { #include <features.h> +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #define __NEED_size_t #define __NEED_wchar_t diff --git a/include/string.h b/include/string.h index d4412333..ff9badb9 100644 --- a/include/string.h +++ b/include/string.h @@ -7,7 +7,11 @@ extern "C" { #include <features.h> +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #define __NEED_size_t #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ diff --git a/include/time.h b/include/time.h index 6e499ffe..70574093 100644 --- a/include/time.h +++ b/include/time.h @@ -7,7 +7,12 @@ extern "C" { #include <features.h> +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif + #define __NEED_size_t #define __NEED_time_t diff --git a/include/unistd.h b/include/unistd.h index a00a9c4f..9f2fac96 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -15,7 +15,11 @@ extern "C" { #define SEEK_CUR 1 #define SEEK_END 2 +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #define __NEED_size_t #define __NEED_ssize_t diff --git a/include/wchar.h b/include/wchar.h index fd5aac5f..9fd967cc 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -33,7 +33,11 @@ extern "C" { #define WCHAR_MIN (-1-0x7fffffff+L'\0') #endif +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif #undef WEOF #define WEOF 0xffffffffU |