Skip to content

Commit ef8121b

Browse files
committed
[Headers] Remove a space in NULL define
There was no space in `((void *)0)` before D158709. This can cause downstream warnings in case other libraries define `NULL` as `((void*)0)`, which is the case for [[ https://www.musl-libc.org/ | musl ]]. (see `NULL` definition in https://git.musl-libc.org/cgit/musl/tree/include/stdio.h) When a macro is redefined, if the content is the same it is fine, but if it is different even in terms of a single space, clang warns: ``` ../musl/include/stdio.h:37:9: error: 'NULL' macro redefined [-Werror,-Wmacro-redefined]    37 | #define NULL ((void*)0)     |         ^ ``` The old code didn't have the space and it had been fine for many years, so I think there's no risk in removing it. The linter seems to prefer the space in there, but I think it has a risk of causing warnings or even errors for downstream users. Reviewed By: iana Differential Revision: https://reviews.llvm.org/D159312
1 parent c987f9d commit ef8121b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

clang/lib/Headers/__stddef_null.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@
1515
#define NULL 0
1616
#endif
1717
#else
18-
#define NULL ((void *)0)
18+
// Don't add any whitespaces in ((void*)0) below!
19+
// musl (https://www.musl-libc.org/) redefines `NULL` as such and redefinition
20+
// with a different expression, even in terms of a single whitespace, causes a
21+
// warning.
22+
#define NULL ((void*)0)
1923
#endif

0 commit comments

Comments
 (0)