When (new_name == old_name), the previous one prefixed old_name
alone, leaving new_name untouched, and worse yet, left it
dangling pointing at an already freed memory location.
Signed-off-by: Junio C Hamano <junkio@cox.net>
if (!prefix)
return;
for ( ; p; p = p->next) {
- if (p->new_name != p->old_name)
+ if (p->new_name == p->old_name) {
+ char *prefixed = p->new_name;
+ prefix_one(&prefixed);
+ p->new_name = p->old_name = prefixed;
+ }
+ else {
prefix_one(&p->new_name);
- prefix_one(&p->old_name);
+ prefix_one(&p->old_name);
+ }
}
}