On Mon, Jul 11, 2022 at 12:38 AM Junio C Hamano [off-list ref] wrote:
Eric Sunshine [off-list ref] writes:
quoted
On Sun, Jul 10, 2022 at 10:00 PM Han Xin [off-list ref] wrote:
quoted
On Sun, Jul 10, 2022 at 4:12 PM Eric Sunshine [off-list ref] wrote:
quoted
[1]: `cc --version` => "Apple LLVM version 10.0.0 (clang-1000.10.44.4)"
- git_zstream zstream = { 0 };
+ git_zstream zstream = {{ 0 }};
Not a comment, just wondering, when should I use "{ { 0 } }" and when
should I use "{ 0 }"?
I don't have a good answer. More modern `clang` versions don't seem to
complain about plain old `{0}` here, but the older `clang` with which
I'm stuck does complain.
I think, from the language-lawyer perspective, "{ 0 }" is how we
should spell these initialization when we are not using designated
initializers, even when the first member of the struct happens to be
a struct.
The older clang that complains at you is simply buggy, and I think
we had the same issue with older sparse.
I can't tell from your response whether or not you intend to pick up
this patch. I don't disagree that older clang may be considered buggy
in this regard, but older clang versions still exist in the wild, and
we already support them by applying `{{0}}` when appropriate:
% git grep -n '{ *{ *0 *} *}'
builtin/merge-file.c:31: xmparam_t xmp = {{0}};
builtin/worktree.c:262: struct config_set cs = { { 0 } };
oidset.h:25:#define OIDSET_INIT { { 0 } }
worktree.c:840: struct config_set cs = { { 0 } };
so the change made by this patch is in line with existing practice on
this project.