]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ds/multi-pack-index'
authorJunio C Hamano <gitster@pobox.com>
Fri, 1 May 2020 20:39:55 +0000 (13:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 1 May 2020 20:39:55 +0000 (13:39 -0700)
The multi-pack-index left mmapped file descriptors open when it
does not have to.

* ds/multi-pack-index:
  multi-pack-index: close file descriptor after mmap

1  2 
midx.c
midx.h

diff --cc midx.c
index a520e263956086a988b77d6e22a7262c9aeba9b8,95d29ce4629e093af78f0bbfd2275563bdb3c3b1..9a61d3b37d9a3607e6a53258760c9bfa7e732075
--- 1/midx.c
--- 2/midx.c
+++ b/midx.c
@@@ -72,9 -68,9 +72,9 @@@ struct multi_pack_index *load_multi_pac
        FREE_AND_NULL(midx_name);
  
        midx_map = xmmap(NULL, midx_size, PROT_READ, MAP_PRIVATE, fd, 0);
+       close(fd);
  
 -      FLEX_ALLOC_MEM(m, object_dir, object_dir, strlen(object_dir));
 +      FLEX_ALLOC_STR(m, object_dir, object_dir);
-       m->fd = fd;
        m->data = midx_map;
        m->data_len = midx_size;
        m->local = local;
@@@ -182,20 -180,16 +182,18 @@@ cleanup_fail
        return NULL;
  }
  
 -static void close_midx(struct multi_pack_index *m)
 +void close_midx(struct multi_pack_index *m)
  {
        uint32_t i;
 +
 +      if (!m)
 +              return;
 +
        munmap((unsigned char *)m->data, m->data_len);
-       close(m->fd);
-       m->fd = -1;
  
        for (i = 0; i < m->num_packs; i++) {
 -              if (m->packs[i]) {
 -                      close_pack(m->packs[i]);
 -                      free(m->packs);
 -              }
 +              if (m->packs[i])
 +                      m->packs[i]->multi_pack_index = 0;
        }
        FREE_AND_NULL(m->packs);
        FREE_AND_NULL(m->pack_names);
diff --cc midx.h
Simple merge