When running the gnulib unit tests in sed-4.5.48-58eb on Cygwin, I see a crash of the test-gettimeofday.exe program. It is caused by endless recursion: rpl_localtime and rpl_gmtime are compiled into endless recursions.
You don't see this endless recursion when using a regular Autoconf release. But the sed-4.5.48-58eb snapshot is built with an Autoconf snapshot that contains a bug: it reports checking whether we are cross compiling... yes (instead of 'no'), and as a consequence checking whether gettimeofday clobbers localtime buffer... guessing yes (instead of 'no'), and thus localtime-buffer.c compiles to non-empty code. This code, which was meant to invoke the system's localtime and gmtime functions, invokes the gnulib replacements because localtime-buffer.h includes <time.h> (which in this case is gnulib's time.h override). This patch fixes the bug in gnulib. The bug in Autoconf is separate. 2018-12-13 Bruno Haible <br...@clisp.org> localtime-buffer: Avoid endless recursion in localtime and gmtime. * lib/localtime-buffer.c: Undefine localtime and gmtime before use. diff --git a/lib/localtime-buffer.c b/lib/localtime-buffer.c index 7f12ce6..a245e56 100644 --- a/lib/localtime-buffer.c +++ b/lib/localtime-buffer.c @@ -34,6 +34,7 @@ struct tm *localtime_buffer_addr = &tm_zero_buffer; struct tm * rpl_localtime (time_t const *timep) +#undef localtime { struct tm *tm = localtime (timep); @@ -46,6 +47,7 @@ rpl_localtime (time_t const *timep) /* Same as above, since gmtime and localtime use the same buffer. */ struct tm * rpl_gmtime (time_t const *timep) +#undef gmtime { struct tm *tm = gmtime (timep);