Browse Source

Fix double "close()" in ce_compare_data

Doing an "strace" on "git diff" shows that we close() a file descriptor
twice (getting EBADFD on the second one) when we end up in ce_compare_data
if the index does not match the checked-out stat information.

The "index_fd()" function will already have closed the fd for us, so we
should not close it again.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Linus Torvalds 19 years ago committed by Junio C Hamano
parent
commit
7f8508e8d3
  1. 2
      read-cache.c

2
read-cache.c

@ -61,7 +61,7 @@ static int ce_compare_data(struct cache_entry *ce, struct stat *st) @@ -61,7 +61,7 @@ static int ce_compare_data(struct cache_entry *ce, struct stat *st)
unsigned char sha1[20];
if (!index_fd(sha1, fd, st, 0, NULL))
match = memcmp(sha1, ce->sha1, 20);
close(fd);
/* index_fd() closed the file descriptor already */
}
return match;
}

Loading…
Cancel
Save