aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-06-25 11:49:48 -0700
committerJunio C Hamano <gitster@pobox.com>2014-06-25 11:49:48 -0700
commit1881d2b88c4b889dcb95782ad4bc5395808438e9 (patch)
treecab7b82ccfc98e89b355c3dc209b7ec6656e1b93 /builtin
parent85785df6d6db50ff37d0ff1878c16ad69a063f6a (diff)
parent426ddeead6112955dfb50ccf9bb4af05d1ca9082 (diff)
downloadgit-1881d2b88c4b889dcb95782ad4bc5395808438e9.tar.gz
git-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')
-rw-r--r--builtin/index-pack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 54b089542..18f57de58 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)