commit-slab.h: avoid duplicated global static variables
commitaf920e369778a4cc42519ef523131d29451bf79b
authorJohannes Sixt <j6t@kdbg.org>
Tue, 9 Aug 2016 14:17:56 +0000 (9 16:17 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Aug 2016 17:20:06 +0000 (9 10:20 -0700)
treebf6fe742e5eccf45138f18f6dfbbac2665d91a9e
parentdc29ddebb969af489cdfd5dbbf424710973ef62f
commit-slab.h: avoid duplicated global static variables

The gigantic define_commit_slab() macro repeats the definition of a
static variable that occurs earlier in the macro text. The purpose of
the repeated definition at the end of the macro is that it takes the
semicolon that occurs where the macro is used.

We cannot just remove the first definition of the variable because it
is referenced elsewhere in the macro text, and defining the macro later
would produce undefined identifier errors. We cannot have a "forward"
declaration, either. (This works only with "extern" global variables.)

The solution is to use a declaration of a struct that is already defined
earlier. This language construct can serve the same purpose as the
duplicated static variable definition, but without the confusion.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-slab.h