@@ -172,6 +172,11 @@ struct module_list {
172
172
};
173
173
#define MODULE_LIST_INIT { 0 }
174
174
175
+ static void module_list_release (struct module_list * ml )
176
+ {
177
+ free (ml -> entries );
178
+ }
179
+
175
180
static int module_list_compute (int argc , const char * * argv ,
176
181
const char * prefix ,
177
182
struct pathspec * pathspec ,
@@ -234,7 +239,7 @@ static void module_list_active(struct module_list *list)
234
239
active_modules .entries [active_modules .nr ++ ] = ce ;
235
240
}
236
241
237
- free (list -> entries );
242
+ module_list_release (list );
238
243
* list = active_modules ;
239
244
}
240
245
@@ -407,6 +412,7 @@ static int module_foreach(int argc, const char **argv, const char *prefix)
407
412
408
413
ret = 0 ;
409
414
cleanup :
415
+ module_list_release (& list );
410
416
clear_pathspec (& pathspec );
411
417
return ret ;
412
418
}
@@ -553,6 +559,7 @@ static int module_init(int argc, const char **argv, const char *prefix)
553
559
554
560
ret = 0 ;
555
561
cleanup :
562
+ module_list_release (& list );
556
563
clear_pathspec (& pathspec );
557
564
return ret ;
558
565
}
@@ -730,6 +737,7 @@ static int module_status(int argc, const char **argv, const char *prefix)
730
737
731
738
ret = 0 ;
732
739
cleanup :
740
+ module_list_release (& list );
733
741
clear_pathspec (& pathspec );
734
742
return ret ;
735
743
}
@@ -1302,6 +1310,7 @@ static int module_sync(int argc, const char **argv, const char *prefix)
1302
1310
1303
1311
ret = 0 ;
1304
1312
cleanup :
1313
+ module_list_release (& list );
1305
1314
clear_pathspec (& pathspec );
1306
1315
return ret ;
1307
1316
}
@@ -1454,6 +1463,7 @@ static int module_deinit(int argc, const char **argv, const char *prefix)
1454
1463
1455
1464
ret = 0 ;
1456
1465
cleanup :
1466
+ module_list_release (& list );
1457
1467
clear_pathspec (& pathspec );
1458
1468
return ret ;
1459
1469
}
@@ -1831,6 +1841,12 @@ struct submodule_update_clone {
1831
1841
};
1832
1842
#define SUBMODULE_UPDATE_CLONE_INIT { 0 }
1833
1843
1844
+ static void submodule_update_clone_release (struct submodule_update_clone * suc )
1845
+ {
1846
+ free (suc -> update_clone );
1847
+ free (suc -> failed_clones );
1848
+ }
1849
+
1834
1850
struct update_data {
1835
1851
const char * prefix ;
1836
1852
const char * displaypath ;
@@ -1869,6 +1885,11 @@ struct update_data {
1869
1885
.max_jobs = 1, \
1870
1886
}
1871
1887
1888
+ static void update_data_release (struct update_data * ud )
1889
+ {
1890
+ module_list_release (& ud -> list );
1891
+ }
1892
+
1872
1893
static void next_submodule_warn_missing (struct submodule_update_clone * suc ,
1873
1894
struct strbuf * out , const char * displaypath )
1874
1895
{
@@ -2554,6 +2575,7 @@ static int update_submodules(struct update_data *update_data)
2554
2575
}
2555
2576
2556
2577
cleanup :
2578
+ submodule_update_clone_release (& suc );
2557
2579
string_list_clear (& update_data -> references , 0 );
2558
2580
return ret ;
2559
2581
}
@@ -2651,6 +2673,7 @@ static int module_update(int argc, const char **argv, const char *prefix)
2651
2673
2652
2674
if (module_list_compute (argc , argv , opt .prefix ,
2653
2675
& pathspec2 , & list ) < 0 ) {
2676
+ module_list_release (& list );
2654
2677
ret = 1 ;
2655
2678
goto cleanup ;
2656
2679
}
@@ -2667,10 +2690,12 @@ static int module_update(int argc, const char **argv, const char *prefix)
2667
2690
info .flags |= OPT_QUIET ;
2668
2691
2669
2692
for_each_listed_submodule (& list , init_submodule_cb , & info );
2693
+ module_list_release (& list );
2670
2694
}
2671
2695
2672
2696
ret = update_submodules (& opt );
2673
2697
cleanup :
2698
+ update_data_release (& opt );
2674
2699
list_objects_filter_release (& filter_options );
2675
2700
clear_pathspec (& pathspec );
2676
2701
clear_pathspec (& pathspec2 );
@@ -2786,6 +2811,7 @@ static int absorb_git_dirs(int argc, const char **argv, const char *prefix)
2786
2811
ret = 0 ;
2787
2812
cleanup :
2788
2813
clear_pathspec (& pathspec );
2814
+ module_list_release (& list );
2789
2815
return ret ;
2790
2816
}
2791
2817
0 commit comments