diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-06-25 11:49:48 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-25 11:49:48 -0700 |
commit | 1881d2b88c4b889dcb95782ad4bc5395808438e9 (patch) | |
tree | cab7b82ccfc98e89b355c3dc209b7ec6656e1b93 /builtin/index-pack.c | |
parent | Merge branch 'mk/show-s-no-extra-blank-line-for-merges' into maint (diff) | |
parent | read-cache.c: verify index file before we opportunistically update it (diff) | |
download | tgif-1881d2b88c4b889dcb95782ad4bc5395808438e9.tar.xz |
Merge branch 'ym/fix-opportunistic-index-update-race' into maint
"git status", even though it is a read-only operation, tries to
update the index with refreshed lstat(2) info to optimize future
accesses to the working tree opportunistically, but this could
race with a "read-write" operation that modify the index while it
is running. Detect such a race and avoid overwriting the index.
* ym/fix-opportunistic-index-update-race:
read-cache.c: verify index file before we opportunistically update it
wrapper.c: add xpread() similar to xread()
Diffstat (limited to 'builtin/index-pack.c')
-rw-r--r-- | builtin/index-pack.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 54b089542b..18f57de58b 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -554,7 +554,7 @@ static void *unpack_data(struct object_entry *obj, do { ssize_t n = (len < 64*1024) ? len : 64*1024; - n = pread(get_thread_data()->pack_fd, inbuf, n, from); + n = xpread(get_thread_data()->pack_fd, inbuf, n, from); if (n < 0) die_errno(_("cannot pread pack file")); if (!n) |