On Mon, Jan 25, 2021 at 20:28:52 +0300, Valery Ushakov wrote: > On Mon, Jan 25, 2021 at 08:19:44 -0800, Jason Thorpe wrote: > > > > On Jan 25, 2021, at 6:22 AM, Kamil Rytarowski <ka...@netbsd.org> wrote: > > > > > > I have no problem with this change but I am curious why should we use "{ > > > }"? It's a C GNU extension and C++ syntax. > > > > Using { 0 } makes an assumption about the first member of the > > structure which is not guaranteed to remain true. > > The commit message says: > > | Since we're using designated initialisers for compat data, we should > | use a completely empty initializer for the sentinel. > > but that "should" is not true. The code that checks that sentinel > uses some particular member to access it, so, pedantically speaking, > the initialization must designate that member in the sentinel > initialization. Yes, this is verbose and doesn't look as pretty, but > that is what "should" happen here. Using non-standard {} extension > makes it look nicer, but is not a "should" kind of necessity.
PS: Forgot to add that C++ doesn't have designated initializers (or at least it didn't last time I looked), so they are in a different situation here and need an empty initializer list. In C the only difference it makes is, as far as I can tell, exactly this kind of an array with a sentinel at the end and the difference is cosmetic. -uwe