Fix botched "leak fix"

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>
diff --git a/builtin-apply.c b/builtin-apply.c
index 2a40af3..1beebe5 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -2516,9 +2516,15 @@
 	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);
+		}
 	}
 }