diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-06-11 09:29:55 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-11 09:29:55 -0700 |
commit | dee47925c1d001947cf9a099e1cb883835f90c64 (patch) | |
tree | 43b49f39956a69276de2aa25c956868cc8ec675c /sha1_file.c | |
parent | Merge branch 'mt/p4-depotFile-at-version' (diff) | |
parent | xmmap(): drop "Out of memory?" (diff) | |
download | tgif-dee47925c1d001947cf9a099e1cb883835f90c64.tar.xz |
Merge branch 'jk/diagnose-config-mmap-failure'
The configuration reader/writer uses mmap(2) interface to access
the files; when we find a directory, it barfed with "Out of memory?".
* jk/diagnose-config-mmap-failure:
xmmap(): drop "Out of memory?"
config.c: rewrite ENODEV into EISDIR when mmap fails
config.c: avoid xmmap error messages
config.c: fix mmap leak when writing config
read-cache.c: drop PROT_WRITE from mmap of index
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sha1_file.c b/sha1_file.c index 7e38148fe5..50384754e5 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -707,8 +707,8 @@ static void mmap_limit_check(size_t length) (uintmax_t)length, (uintmax_t)limit); } -void *xmmap(void *start, size_t length, - int prot, int flags, int fd, off_t offset) +void *xmmap_gently(void *start, size_t length, + int prot, int flags, int fd, off_t offset) { void *ret; @@ -719,12 +719,19 @@ void *xmmap(void *start, size_t length, return NULL; release_pack_memory(length); ret = mmap(start, length, prot, flags, fd, offset); - if (ret == MAP_FAILED) - die_errno("Out of memory? mmap failed"); } return ret; } +void *xmmap(void *start, size_t length, + int prot, int flags, int fd, off_t offset) +{ + void *ret = xmmap_gently(start, length, prot, flags, fd, offset); + if (ret == MAP_FAILED) + die_errno("mmap failed"); + return ret; +} + void close_pack_windows(struct packed_git *p) { while (p->windows) { |