On Wed, Jul 17, 2019 at 11:13:04AM -0700, Junio C Hamano wrote:
> Jeff King <[email protected]> writes:
>
> > ... My big question is if we use "{}" for gcc (and
> > compatible friends), does that squelch all of the complaints from other
> > compilers and tools that might see the "{0}" version? In particular,
> > does it work for sparse?
>
> Yeah, I agree that it is the most important question. The best
> solution is not to do the macro, use "= { 0 };" everywhere *and*
> somehow arrange sparse not to complain about it. I am not sure if
> the last part is doable, though.
I did just check "make range-diff.sp" with this diff:
diff --git a/range-diff.c b/range-diff.c
index ba1e9a4265..481cefff3e 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -102,7 +102,7 @@ static int read_patches(const char *range, struct
string_list *list)
}
if (starts_with(line, "diff --git")) {
- struct patch patch = { 0 };
+ struct patch patch = { };
struct strbuf root = STRBUF_INIT;
int linenr = 0;
and it seems OK. So presumably we could just lump sparse into the list
of gcc-compatible platforms, and it would work. But it does require the
macro still for other hosts.
Other than that, our options seem to be:
1. Live with it. IIRC we're already not sparse-clean, and Ramsay
mostly looks at the diff to find new problems.
2. Pass -Wno-non-pointer-null to sparse. Unfortunately that also
disables more useful warnings (like passing "0" instead of NULL to
a function).
3. Switch to NULL here, and adhere to that going forward.
-Peff