"Shawn O. Pearce" [off-list ref] writes:
If open_packed_git failed it may have been because the packfile
actually exists and is readable, but some sort of verification
did not pass. In this case open_packed_git left pack_fd filled
in, as the file descriptor is valid.
if (p->pack_fd == -1 && open_packed_git(p)) {
+ if (p->pack_fd != -1) {
+ close(p->pack_fd);
+ p->pack_fd = -1;
+ }
I agree leaking fd is not nice, but I wonder if that should be
dealt with by the caller.
Originally it did not matter as open_packed_git() died, but
shouldn't it be closing the fd and marking p->pack_fd with -1, as
you made it return instead of die?