git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/5] *.[ch] *_INIT macros: use { 0 } for a "zero out" idiom

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Sep 28, 2021, 00:25 UTC
Message-ID
<87h7e5zgjw.fsf@evledraar.gmail.com>
In-Reply-To
<YVJSwuqjolz28+mG@coredump.intra.peff.net>
On Mon, Sep 27 2021, Jeff King wrote:
Show 26 quoted lines
> On Mon, Sep 27, 2021 at 02:54:25PM +0200, Ævar Arnfjörð Bjarmason wrote:
>
>> In C it isn't required to specify that all members of a struct are
>> zero'd out to 0, NULL or '\0', just providing a "{ 0 }" will
>> accomplish that.
>> 
>> Let's also change code that provided N zero'd fields to just
>> provide one, and change e.g. "{ NULL }" to "{ 0 }" for
>> consistency. I.e. even if the first member is a pointer let's use "0"
>> instead of "NULL". The point of using "0" consistently is to pick one,
>> and to not have the reader wonder why we're not using the same pattern
>> everywhere.
>
> I seem to recall we've had some linter complaints about using "0" to
> initialize a pointer, but I think these days it's OK, per:
>
>  - 1c96642326 (sparse: allow '{ 0 }' to be used without warnings,
>    2020-05-22)
>
> and
>
>  - https://lore.kernel.org/git/18bd6127-be72-b7b7-8e2a-17bbe7214a2e@ramsayjones.plus.com/
>
> I think this is a good step, as the long lists are unwieldy and difficult to
> keep up to date without actually providing any readability or functional
> value.
[+CC Luc Van Oostenryck <luc.vanoostenryck@gmail.com>]

It seems like we should just revert 1c96642326, looking at the history of sparse.git there's:

 - 537e3e2d (univ-init: conditionally accept { 0 } without warnings, 2020-05-18)
Followed by git.git's 1c96642326 a few days later, but then in sparse.git:
 - 41f651b4 (univ-init: set default to -Wno-universal-initializer, 2020-05-29)

I.e. a few days after the workaround in git.git the upstream repo changed the default. The 537e3e2d isn't in any release of sparse that 41f651b4 isn't in, they both first appeared in v0.6.2.

So us having -Wno-universal-initializer only seems useful if you're using some old commit in sparse.git.

Having written the above I found https://lore.kernel.org/git/20200530162432.a7fitzjc53hsn2ej@ltop.local/; i.e. sparse's maintainer pretty much saying the same thing.

Previous: Jeff KingNext: Jeff King
Message 25 of 32 in “Designated initializer cleanup & conversion”
  1. 0/5 Designated initializer cleanup & conversionÆvar Arnfjörð Bjarmason, Sep 27, 2021
  2. 2/5 *.[ch] *_INIT macros: use { 0 } for a "zero out" idiomÆvar Arnfjörð Bjarmason, Sep 27, 2021
  3. Eric SunshineSep 27, 2021
  4. Johannes SixtSep 27, 2021
  5. Junio C HamanoSep 27, 2021
  6. 1/5 submodule-config.h: remove unused SUBMODULE_INIT macroÆvar Arnfjörð Bjarmason, Sep 27, 2021
  7. 3/5 *.h _INIT macros: don't specify fields equal to 0Ævar Arnfjörð Bjarmason, Sep 27, 2021
  8. 5/5 cbtree.h: define cb_init() in terms of CBTREE_INITÆvar Arnfjörð Bjarmason, Sep 27, 2021
  9. Johannes SixtSep 27, 2021
  10. Ævar Arnfjörð BjarmasonSep 27, 2021
  11. Jeff KingSep 27, 2021
  12. Johannes SixtSep 28, 2021
  13. Junio C HamanoSep 28, 2021
  14. Ævar Arnfjörð BjarmasonSep 28, 2021
  15. Junio C HamanoSep 28, 2021
  16. Phillip WoodSep 27, 2021
  17. Ævar Arnfjörð BjarmasonSep 27, 2021
  18. Phillip WoodSep 30, 2021
  19. 4/5 *.h: move some *_INIT to designated initializersÆvar Arnfjörð Bjarmason, Sep 27, 2021
  20. 0/5 Designated initializer cleanup & conversionÆvar Arnfjörð Bjarmason, Sep 27, 2021
  21. 1/5 submodule-config.h: remove unused SUBMODULE_INIT macroÆvar Arnfjörð Bjarmason, Sep 27, 2021
  22. Jeff KingSep 27, 2021
  23. 2/5 *.[ch] *_INIT macros: use { 0 } for a "zero out" idiomÆvar Arnfjörð Bjarmason, Sep 27, 2021
  24. Jeff KingSep 27, 2021
  25. Ævar Arnfjörð BjarmasonSep 28, 2021
  26. Jeff KingSep 28, 2021
  27. Ramsay JonesSep 28, 2021
  28. 3/5 *.h _INIT macros: don't specify fields equal to 0Ævar Arnfjörð Bjarmason, Sep 27, 2021
  29. Junio C HamanoSep 27, 2021
  30. 4/5 *.h: move some *_INIT to designated initializersÆvar Arnfjörð Bjarmason, Sep 27, 2021
  31. Junio C HamanoSep 27, 2021
  32. 5/5 cbtree.h: define cb_init() in terms of CBTREE_INITÆvar Arnfjörð Bjarmason, Sep 27, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.