From a76d74fb7146d1785cdefc58a91c50ab9acec775 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 5 Jun 2005 23:32:53 -0700 Subject: [PATCH] Three-way merge: fix silly bug that made trivial merges not work Making the main loop look more like the one- and two-way cases introduced a bug where "src" had been updated early, but later users hadn't been adjusted to match. --- read-tree.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/read-tree.c b/read-tree.c index 8c9ffe123..b72ee1c54 100644 --- a/read-tree.c +++ b/read-tree.c @@ -146,7 +146,7 @@ static void trivially_merge_cache(struct cache_entry **src, int nr) } if (old && !path_matches(old, ce)) reject_merge(old); - if (nr > 2 && (result = merge_entries(ce, src[1], src[2])) != NULL) { + if (nr > 2 && (result = merge_entries(ce, src[0], src[1])) != NULL) { result->ce_flags |= htons(CE_UPDATE); /* * See if we can re-use the old CE directly? @@ -160,8 +160,8 @@ static void trivially_merge_cache(struct cache_entry **src, int nr) old = NULL; } CHECK_OLD(ce); + CHECK_OLD(src[0]); CHECK_OLD(src[1]); - CHECK_OLD(src[2]); ce = result; ce->ce_flags &= ~htons(CE_STAGEMASK); src += 2; -- 2.26.2