On 24/04/2020 16:12, Đoàn Trần Công Danh wrote: > Somewhere later in the code, we indirectly include alloca.h > which will define alloca again, thus create a warning about > redefinition of a preprocessor. > > Include it prior to define alloca in order to not define it again. So, on cygwin, this patch is not required. ie. I don't see any sparse errors/warnings for compat/regex/regex.c. Since cygwin uses a different c library (new-lib rather than glibc), I did a quick test on Linux, thus: $ sparse --version v0.6.1-191-gc51a0382 $ $ git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. $ $ make clean GIT_VERSION = 2.26.2.266.ge870325ee8 ... $ $ make NO_REGEX=1 sparse >sp-out1 2>&1 $ $ diff sp-out sp-out1 0a1,2 > GIT_VERSION = 2.26.2.266.ge870325ee8 > * new build flags 12a15 > * new prefix flags 72a76 > GEN command-list.h 226a231 > SP compat/regex/regex.c $ $ make V=1 NO_REGEX=1 compat/regex/regex.sp cgcc -no-compile -Werror -Wall -Wdeclaration-after-statement -Wformat-security -Wold-style-definition -Woverflow -Wpointer-arith -Wstrict-prototypes -Wunused -Wvla -DENABLE_SHA256 -Wextra -Wmissing-prototypes -Wno-empty-body -Wno-missing-field-initializers -Wno-sign-compare -Wno-unused-parameter -g -O2 -Wall -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"x86_64\"" -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"cache.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -Icompat/regex -DSHELL_PATH='"/bin/sh"' -DPAGER_ENV='"LESS=FRX LV=-c"' -DGAWK -DNO_MBSUPPORT \ compat/regex/regex.c $ So, again I don't see a problem. I guess it is possible that the version of sparse I am using (see above) has _also_ fixed this problem, in addition to the prototype attribute placement fix. Another option is that the version of glibc also matters. (I am on Linux Mint, which is based on Ubuntu 18.04 LTS) It would not be the first time that I have seen errors in system header files change from one release to the next ... [Hmm, I have a fedora 31 system I could try - much more up-to-date! :D ] ATB, Ramsay Jones > Signed-off-by: Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> > --- > compat/regex/regex.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/compat/regex/regex.c b/compat/regex/regex.c > index f3e03a9eab..4bef75a716 100644 > --- a/compat/regex/regex.c > +++ b/compat/regex/regex.c > @@ -62,6 +62,7 @@ > #include <stdint.h> > > #ifdef GAWK > +#include <alloca.h> > #undef alloca > #define alloca alloca_is_bad_you_should_never_use_it > #endif >