MSVC: link in invalidcontinue.obj for better POSIX compatibility
authorMarat Radchenko <marat@slonopotamus.org>
Fri, 28 Mar 2014 20:08:02 +0000 (00:08 +0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 28 Mar 2014 20:37:16 +0000 (13:37 -0700)
By default, Windows abort()'s instead of setting
errno=EINVAL when invalid arguments are passed to standard functions.

For example, when PAGER quits and git detects it with
errno=EPIPE on write(), check_pipe() in write_or_die.c tries raise(SIGPIPE)
but since there is no SIGPIPE on Windows, it is treated as invalid argument,
causing abort() and crash report window.

Linking in invalidcontinue.obj (provided along with MS compiler) allows
raise(SIGPIPE) to return with errno=EINVAL.

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.mak.uname
index 7d31fad241761e41de655de6f42ddfb8c87ea4f2..a62d9fd1e2e9d8934167f0da3701929d2bc584a5 100644 (file)
@@ -365,7 +365,7 @@ ifeq ($(uname_S),Windows)
                compat/win32/dirent.o
        COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
        BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib
-       EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib
+       EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib invalidcontinue.obj
        PTHREAD_LIBS =
        lib =
 ifndef DEBUG