Skip to content

Commit c4ebe9d

Browse files
author
Git for Windows Build Agent
committed
Merge pull request #1149 from jeffhostetler/jeffhostetler/do_write_index_mtime
read-cache: close index.lock in do_write_index
2 parents e83167b + 4473294 commit c4ebe9d

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

read-cache.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2247,9 +2247,10 @@ void update_index_if_able(struct index_state *istate, struct lock_file *lockfile
22472247
rollback_lock_file(lockfile);
22482248
}
22492249

2250-
static int do_write_index(struct index_state *istate, int newfd,
2250+
static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
22512251
int strip_extensions)
22522252
{
2253+
int newfd = tempfile->fd;
22532254
git_SHA_CTX c;
22542255
struct cache_header hdr;
22552256
int i, err, removed, extended, hdr_version;
@@ -2361,7 +2362,11 @@ static int do_write_index(struct index_state *istate, int newfd,
23612362
return -1;
23622363
}
23632364

2364-
if (ce_flush(&c, newfd, istate->sha1) || fstat(newfd, &st))
2365+
if (ce_flush(&c, newfd, istate->sha1))
2366+
return -1;
2367+
if (close_tempfile(tempfile))
2368+
return error(_("could not close '%s'"), tempfile->filename.buf);
2369+
if (lstat(tempfile->filename.buf, &st))
23652370
return -1;
23662371
istate->timestamp.sec = (unsigned int)st.st_mtime;
23672372
istate->timestamp.nsec = ST_MTIME_NSEC(st);
@@ -2384,7 +2389,7 @@ static int commit_locked_index(struct lock_file *lk)
23842389
static int do_write_locked_index(struct index_state *istate, struct lock_file *lock,
23852390
unsigned flags)
23862391
{
2387-
int ret = do_write_index(istate, get_lock_file_fd(lock), 0);
2392+
int ret = do_write_index(istate, &lock->tempfile, 0);
23882393
if (ret)
23892394
return ret;
23902395
assert((flags & (COMMIT_LOCK | CLOSE_LOCK)) !=
@@ -2481,7 +2486,7 @@ static int write_shared_index(struct index_state *istate,
24812486
return do_write_locked_index(istate, lock, flags);
24822487
}
24832488
move_cache_to_base_index(istate);
2484-
ret = do_write_index(si->base, fd, 1);
2489+
ret = do_write_index(si->base, &temporary_sharedindex, 1);
24852490
if (ret) {
24862491
delete_tempfile(&temporary_sharedindex);
24872492
return ret;

0 commit comments

Comments
 (0)