]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'nd/split-index-null-base-fix'
authorJunio C Hamano <gitster@pobox.com>
Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)
Split-index fix.

* nd/split-index-null-base-fix:
  read-cache.c: fix writing "link" index ext with null base oid

1  2 
read-cache.c
split-index.c
t/t1700-split-index.sh

diff --cc read-cache.c
index 75ff234fc8674c749ee10175a5557c4c23bfe39f,d140b44f8f29adb90c2bbcb74e6f55b06a9dcb47..441537032f65bcbb0182f8c7f82d78e86afc3022
@@@ -2867,40 -2516,12 +2867,41 @@@ static int do_write_index(struct index_
        }
        strbuf_release(&previous_name_buf);
  
 -      if (err)
 +      if (err) {
 +              free(ieot);
                return err;
 +      }
  
        /* Write extension data here */
-       if (!strip_extensions && istate->split_index) {
 +      offset = lseek(newfd, 0, SEEK_CUR);
 +      if (offset < 0) {
 +              free(ieot);
 +              return -1;
 +      }
 +      offset += write_buffer_len;
 +      the_hash_algo->init_fn(&eoie_c);
 +
 +      /*
 +       * Lets write out CACHE_EXT_INDEXENTRYOFFSETTABLE first so that we
 +       * can minimize the number of extensions we have to scan through to
 +       * find it during load.  Write it out regardless of the
 +       * strip_extensions parameter as we need it when loading the shared
 +       * index.
 +       */
 +      if (ieot) {
 +              struct strbuf sb = STRBUF_INIT;
 +
 +              write_ieot_extension(&sb, ieot);
 +              err = write_index_ext_header(&c, &eoie_c, newfd, CACHE_EXT_INDEXENTRYOFFSETTABLE, sb.len) < 0
 +                      || ce_write(&c, newfd, sb.buf, sb.len) < 0;
 +              strbuf_release(&sb);
 +              free(ieot);
 +              if (err)
 +                      return -1;
 +      }
 +
+       if (!strip_extensions && istate->split_index &&
+           !is_null_oid(&istate->split_index->base_oid)) {
                struct strbuf sb = STRBUF_INIT;
  
                err = write_link_extension(&sb, istate) < 0 ||
diff --cc split-index.c
Simple merge
Simple merge