Martin Ågren <martin.agren@xxxxxxxxx> writes: >> -#define STRING_LIST_INIT_NODUP { NULL, 0, 0, 0, NULL } >> +#define STRING_LIST_INIT_NODUP { 0 } > > This "NODUP" one is a bit of an odd case though. You don't actually > change it to use designated initializers, as the patch says. Instead you > change it in a slightly different way. In a sense, you assign the > literal zero not to strdup_strings, but to the first field, which is a > pointer, where I would have expected NULL. > > I think there's been some recent-ish "we can assign `{ 0 }` even if the > first field is a pointer, because it's idiomatic and works out fine" > even if assigning 0 to a pointer looks a bit odd. So it might not be > wrong as such, but it doesn't match what the commit message claims, and > I think it would be more clear to use `{ .strdup_strings = 0 }` here: > We're explicitly interested in *not* duplicating the strings. It's not > just some default "let's leave everything as zero/NULL". Well reasoned. I agree that it is not wrong per-se, and the solution to use designated initializer is indeed in line with the theme of the topic.