Web lists-archives.com

[PATCH 18/30] merge-recursive: Make !o->detect_rename codepath more obvious




Previously, if !o->detect_rename then get_renames() would return an
empty string_list, and then process_renames() would have nothing to
iterate over.  It seems more straightforward to simply avoid calling
either function in that case.

Signed-off-by: Elijah Newren <newren@xxxxxxxxx>
---
 merge-recursive.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/merge-recursive.c b/merge-recursive.c
index 7a3402e50c..f40c70990c 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1332,8 +1332,6 @@ static struct string_list *get_renames(struct merge_options *o,
 	struct diff_options opts;
 
 	renames = xcalloc(1, sizeof(struct string_list));
-	if (!o->detect_rename)
-		return renames;
 
 	diff_setup(&opts);
 	DIFF_OPT_SET(&opts, RECURSIVE);
@@ -1652,6 +1650,10 @@ static struct rename_info *handle_renames(struct merge_options *o,
 {
 	struct rename_info *rei = xcalloc(1, sizeof(struct rename_info));
 
+	*clean = 1;
+	if (!o->detect_rename)
+		return NULL;
+
 	rei->head_renames  = get_renames(o, head, common, head, merge, entries);
 	rei->merge_renames = get_renames(o, merge, common, head, merge, entries);
 	*clean = process_renames(o, rei->head_renames, rei->merge_renames);
@@ -1664,6 +1666,9 @@ static void cleanup_renames(struct rename_info *re_info)
 	const struct rename *re;
 	int i;
 
+	if (!re_info)
+		return;
+
 	for (i = 0; i < re_info->head_renames->nr; i++) {
 		re = re_info->head_renames->items[i].util;
 		diff_free_filepair(re->pair);
-- 
2.15.0.5.g9567be9905