[HOLD 3/4] check_packed_git_idx: attempt to handle ENOMEM from mmap
Eric Wong <e@80x24.org> wrote:
Show 12 quoted lines
> --- a/packfile.c
> +++ b/packfile.c
> @@ -97,7 +97,11 @@ static int check_packed_git_idx(const char *path, struct packed_git *p)
> close(fd);
> return error("index file %s is too small", path);
> }
> - idx_map = xmmap(NULL, idx_size, PROT_READ, MAP_PRIVATE, fd, 0);
> + do {
> + idx_map = xmmap_gently(NULL, idx_size, PROT_READ, MAP_PRIVATE,
> + fd, 0);
> + } while (idx_map == MAP_FAILED && errno == ENOMEM
> + && unuse_one_window(p));Oops, I dropped extra error handling here :x
> close(fd);
>
> ret = load_idx(path, hashsz, idx_map, idx_size, p);