restore type of NULL to void * except when used in C++ programs
authorRich Felker <dalias@aerifal.cx>
Mon, 25 Nov 2013 02:42:55 +0000 (21:42 -0500)
committerRich Felker <dalias@aerifal.cx>
Mon, 25 Nov 2013 02:42:55 +0000 (21:42 -0500)
commitc8a9c22173f485c8c053709e1dfa0a617cb6be1a
tree6e09d7e73bbff957b45370d412cc6299fe51eb37
parent7e771e62e78944b9d1fe7e78ef71422b9d51f275
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.)
include/locale.h
include/stddef.h
include/stdio.h
include/stdlib.h
include/string.h
include/time.h
include/unistd.h
include/wchar.h