diff options
| author | Junio C Hamano <gitster@pobox.com> | 2010-05-21 03:13:07 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2010-05-21 03:13:07 -0700 |
| commit | 1be270cbdfd46a34fb8ce39ec31bb593137096fc (patch) | |
| tree | 8a5add1291b6f53d82a36214adbdaefbbeac7881 /compat/mingw.c | |
| parent | c06ee3193e7873fde3525045e88c5741cefc91c4 (diff) | |
| parent | c8b296450e5148c576697ea4709072b7855aacd5 (diff) | |
| download | git-1be270cbdfd46a34fb8ce39ec31bb593137096fc.tar.xz | |
Merge branch 'maint'
* maint:
Fix checkout of large files to network shares on Windows XP
start_command: close cmd->err descriptor when fork/spawn fails
Fix "Out of memory? mmap failed" for files larger than 4GB on Windows
Diffstat (limited to 'compat/mingw.c')
| -rw-r--r-- | compat/mingw.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/compat/mingw.c b/compat/mingw.c index f90a114b02..9a8e336582 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -140,6 +140,23 @@ int mingw_open (const char *filename, int oflags, ...) return fd; } +#undef write +ssize_t mingw_write(int fd, const void *buf, size_t count) +{ + /* + * While write() calls to a file on a local disk are translated + * into WriteFile() calls with a maximum size of 64KB on Windows + * XP and 256KB on Vista, no such cap is placed on writes to + * files over the network on Windows XP. Unfortunately, there + * seems to be a limit of 32MB-28KB on X64 and 64MB-32KB on x86; + * bigger writes fail on Windows XP. + * So we cap to a nice 31MB here to avoid write failures over + * the net without changing the number of WriteFile() calls in + * the local case. + */ + return write(fd, buf, min(count, 31 * 1024 * 1024)); +} + #undef fopen FILE *mingw_fopen (const char *filename, const char *otype) { |
