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>
This commit is contained in:
parent
b63fafdfd8
commit
7f8508e8d3
@ -61,7 +61,7 @@ static int ce_compare_data(struct cache_entry *ce, struct stat *st)
|
|||||||
unsigned char sha1[20];
|
unsigned char sha1[20];
|
||||||
if (!index_fd(sha1, fd, st, 0, NULL))
|
if (!index_fd(sha1, fd, st, 0, NULL))
|
||||||
match = memcmp(sha1, ce->sha1, 20);
|
match = memcmp(sha1, ce->sha1, 20);
|
||||||
close(fd);
|
/* index_fd() closed the file descriptor already */
|
||||||
}
|
}
|
||||||
return match;
|
return match;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user