@@ -732,14 +732,23 @@ static void midx_included_packs(struct string_list *include,
732732 struct pack_geometry * geometry )
733733{
734734 struct string_list_item * item ;
735+ struct strbuf buf = STRBUF_INIT ;
736+
737+ for_each_string_list_item (item , & existing -> kept_packs ) {
738+ strbuf_reset (& buf );
739+ strbuf_addf (& buf , "%s.idx" , item -> string );
740+ string_list_insert (include , buf .buf );
741+ }
742+
743+ for_each_string_list_item (item , names ) {
744+ strbuf_reset (& buf );
745+ strbuf_addf (& buf , "pack-%s.idx" , item -> string );
746+ string_list_insert (include , buf .buf );
747+ }
735748
736- for_each_string_list_item (item , & existing -> kept_packs )
737- string_list_insert (include , xstrfmt ("%s.idx" , item -> string ));
738- for_each_string_list_item (item , names )
739- string_list_insert (include , xstrfmt ("pack-%s.idx" , item -> string ));
740749 if (geometry -> split_factor ) {
741- struct strbuf buf = STRBUF_INIT ;
742750 uint32_t i ;
751+
743752 for (i = geometry -> split ; i < geometry -> pack_nr ; i ++ ) {
744753 struct packed_git * p = geometry -> pack [i ];
745754
@@ -754,17 +763,21 @@ static void midx_included_packs(struct string_list *include,
754763 if (!p -> pack_local )
755764 continue ;
756765
766+ strbuf_reset (& buf );
757767 strbuf_addstr (& buf , pack_basename (p ));
758768 strbuf_strip_suffix (& buf , ".pack" );
759769 strbuf_addstr (& buf , ".idx" );
760770
761- string_list_insert (include , strbuf_detach ( & buf , NULL ) );
771+ string_list_insert (include , buf . buf );
762772 }
763773 } else {
764774 for_each_string_list_item (item , & existing -> non_kept_packs ) {
765775 if (pack_is_marked_for_deletion (item ))
766776 continue ;
767- string_list_insert (include , xstrfmt ("%s.idx" , item -> string ));
777+
778+ strbuf_reset (& buf );
779+ strbuf_addf (& buf , "%s.idx" , item -> string );
780+ string_list_insert (include , buf .buf );
768781 }
769782 }
770783
@@ -784,8 +797,13 @@ static void midx_included_packs(struct string_list *include,
784797 */
785798 if (pack_is_marked_for_deletion (item ))
786799 continue ;
787- string_list_insert (include , xstrfmt ("%s.idx" , item -> string ));
800+
801+ strbuf_reset (& buf );
802+ strbuf_addf (& buf , "%s.idx" , item -> string );
803+ string_list_insert (include , buf .buf );
788804 }
805+
806+ strbuf_release (& buf );
789807}
790808
791809static int write_midx_included_packs (struct string_list * include ,
@@ -1476,7 +1494,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
14761494 mark_packs_for_deletion (& existing , & names );
14771495
14781496 if (write_midx ) {
1479- struct string_list include = STRING_LIST_INIT_NODUP ;
1497+ struct string_list include = STRING_LIST_INIT_DUP ;
14801498 midx_included_packs (& include , & existing , & names , & geometry );
14811499
14821500 ret = write_midx_included_packs (& include , & geometry , & names ,
0 commit comments