@@ -362,13 +362,14 @@ static int non_note_cmp(const struct non_note *a, const struct non_note *b)
362
362
return strcmp (a -> path , b -> path );
363
363
}
364
364
365
- static void add_non_note (struct notes_tree * t , const char * path ,
365
+ /* note: takes ownership of path string */
366
+ static void add_non_note (struct notes_tree * t , char * path ,
366
367
unsigned int mode , const unsigned char * sha1 )
367
368
{
368
369
struct non_note * p = t -> prev_non_note , * n ;
369
370
n = (struct non_note * ) xmalloc (sizeof (struct non_note ));
370
371
n -> next = NULL ;
371
- n -> path = xstrdup ( path ) ;
372
+ n -> path = path ;
372
373
n -> mode = mode ;
373
374
hashcpy (n -> sha1 , sha1 );
374
375
t -> prev_non_note = n ;
@@ -482,17 +483,17 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
482
483
* component.
483
484
*/
484
485
{
485
- char non_note_path [PATH_MAX ];
486
- char * p = non_note_path ;
486
+ struct strbuf non_note_path = STRBUF_INIT ;
487
487
const char * q = sha1_to_hex (subtree -> key_sha1 );
488
488
int i ;
489
489
for (i = 0 ; i < prefix_len ; i ++ ) {
490
- * p ++ = * q ++ ;
491
- * p ++ = * q ++ ;
492
- * p ++ = '/' ;
490
+ strbuf_addch ( & non_note_path , * q ++ ) ;
491
+ strbuf_addch ( & non_note_path , * q ++ ) ;
492
+ strbuf_addch ( & non_note_path , '/' ) ;
493
493
}
494
- strcpy (p , entry .path );
495
- add_non_note (t , non_note_path , entry .mode , entry .sha1 );
494
+ strbuf_addstr (& non_note_path , entry .path );
495
+ add_non_note (t , strbuf_detach (& non_note_path , NULL ),
496
+ entry .mode , entry .sha1 );
496
497
}
497
498
}
498
499
free (buf );
0 commit comments