@@ -732,14 +732,23 @@ static void midx_included_packs(struct string_list *include,
732
732
struct pack_geometry * geometry )
733
733
{
734
734
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
+ }
735
748
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 ));
740
749
if (geometry -> split_factor ) {
741
- struct strbuf buf = STRBUF_INIT ;
742
750
uint32_t i ;
751
+
743
752
for (i = geometry -> split ; i < geometry -> pack_nr ; i ++ ) {
744
753
struct packed_git * p = geometry -> pack [i ];
745
754
@@ -754,17 +763,21 @@ static void midx_included_packs(struct string_list *include,
754
763
if (!p -> pack_local )
755
764
continue ;
756
765
766
+ strbuf_reset (& buf );
757
767
strbuf_addstr (& buf , pack_basename (p ));
758
768
strbuf_strip_suffix (& buf , ".pack" );
759
769
strbuf_addstr (& buf , ".idx" );
760
770
761
- string_list_insert (include , strbuf_detach ( & buf , NULL ) );
771
+ string_list_insert (include , buf . buf );
762
772
}
763
773
} else {
764
774
for_each_string_list_item (item , & existing -> non_kept_packs ) {
765
775
if (pack_is_marked_for_deletion (item ))
766
776
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 );
768
781
}
769
782
}
770
783
@@ -784,8 +797,13 @@ static void midx_included_packs(struct string_list *include,
784
797
*/
785
798
if (pack_is_marked_for_deletion (item ))
786
799
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 );
788
804
}
805
+
806
+ strbuf_release (& buf );
789
807
}
790
808
791
809
static int write_midx_included_packs (struct string_list * include ,
@@ -1476,7 +1494,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
1476
1494
mark_packs_for_deletion (& existing , & names );
1477
1495
1478
1496
if (write_midx ) {
1479
- struct string_list include = STRING_LIST_INIT_NODUP ;
1497
+ struct string_list include = STRING_LIST_INIT_DUP ;
1480
1498
midx_included_packs (& include , & existing , & names , & geometry );
1481
1499
1482
1500
ret = write_midx_included_packs (& include , & geometry , & names ,
0 commit comments