@@ -477,26 +477,6 @@ static void read_config(void)
477
477
alias_all_urls ();
478
478
}
479
479
480
- /*
481
- * This function frees a refspec array.
482
- * Warning: code paths should be checked to ensure that the src
483
- * and dst pointers are always freeable pointers as well
484
- * as the refspec pointer itself.
485
- */
486
- static void free_refspecs (struct refspec * refspec , int nr_refspec )
487
- {
488
- int i ;
489
-
490
- if (!refspec )
491
- return ;
492
-
493
- for (i = 0 ; i < nr_refspec ; i ++ ) {
494
- free (refspec [i ].src );
495
- free (refspec [i ].dst );
496
- }
497
- free (refspec );
498
- }
499
-
500
480
static struct refspec * parse_refspec_internal (int nr_refspec , const char * * refspec , int fetch , int verify )
501
481
{
502
482
int i ;
@@ -610,7 +590,7 @@ static struct refspec *parse_refspec_internal(int nr_refspec, const char **refsp
610
590
* since it is only possible to reach this point from within
611
591
* the for loop above.
612
592
*/
613
- free_refspecs ( rs , i + 1 );
593
+ free_refspec ( i + 1 , rs );
614
594
return NULL ;
615
595
}
616
596
die ("Invalid refspec '%s'" , refspec [i ]);
@@ -621,7 +601,7 @@ int valid_fetch_refspec(const char *fetch_refspec_str)
621
601
struct refspec * refspec ;
622
602
623
603
refspec = parse_refspec_internal (1 , & fetch_refspec_str , 1 , 1 );
624
- free_refspecs ( refspec , 1 );
604
+ free_refspec ( 1 , refspec );
625
605
return !!refspec ;
626
606
}
627
607
@@ -638,6 +618,10 @@ struct refspec *parse_push_refspec(int nr_refspec, const char **refspec)
638
618
void free_refspec (int nr_refspec , struct refspec * refspec )
639
619
{
640
620
int i ;
621
+
622
+ if (!refspec )
623
+ return ;
624
+
641
625
for (i = 0 ; i < nr_refspec ; i ++ ) {
642
626
free (refspec [i ].src );
643
627
free (refspec [i ].dst );
0 commit comments