@@ -277,6 +277,7 @@ static struct match_attr *parse_attr_line(const char *line, const char *src,
277
277
static struct attr_stack {
278
278
struct attr_stack * prev ;
279
279
char * origin ;
280
+ size_t originlen ;
280
281
unsigned num_matches ;
281
282
unsigned alloc ;
282
283
struct match_attr * * attrs ;
@@ -527,6 +528,7 @@ static void bootstrap_attr_stack(void)
527
528
if (!is_bare_repository () || direction == GIT_ATTR_INDEX ) {
528
529
elem = read_attr (GITATTRIBUTES_FILE , 1 );
529
530
elem -> origin = xstrdup ("" );
531
+ elem -> originlen = 0 ;
530
532
elem -> prev = attr_stack ;
531
533
attr_stack = elem ;
532
534
debug_push (elem );
@@ -620,7 +622,7 @@ static void prepare_attr_stack(const char *path)
620
622
strbuf_addstr (& pathbuf , GITATTRIBUTES_FILE );
621
623
elem = read_attr (pathbuf .buf , 0 );
622
624
strbuf_setlen (& pathbuf , cp - path );
623
- elem -> origin = strbuf_detach (& pathbuf , NULL );
625
+ elem -> origin = strbuf_detach (& pathbuf , & elem -> originlen );
624
626
elem -> prev = attr_stack ;
625
627
attr_stack = elem ;
626
628
debug_push (elem );
@@ -695,7 +697,7 @@ static int fill(const char *path, int pathlen, struct attr_stack *stk, int rem)
695
697
if (a -> is_macro )
696
698
continue ;
697
699
if (path_matches (path , pathlen ,
698
- a -> u .pattern , base , strlen ( base ) ))
700
+ a -> u .pattern , base , stk -> originlen ))
699
701
rem = fill_one ("fill" , a , rem );
700
702
}
701
703
return rem ;
0 commit comments