Thread (9 messages) 9 messages, 4 authors, 2022-07-15

Re: [PATCH] unpack-objects: fix compilation warning/error due to missing braces

From: Eric Sunshine <hidden>
Date: 2022-07-12 06:29:05

Possibly related (same subject, not in this thread)

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help