From: Linus Torvalds Date: Mon, 6 Jun 2005 06:32:53 +0000 (-0700) Subject: Three-way merge: fix silly bug that made trivial merges not work X-Git-Tag: v0.99~344 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=a76d74fb7146d1785cdefc58a91c50ab9acec775;p=git.git 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. --- diff --git a/read-tree.c b/read-tree.c index 8c9ffe12..b72ee1c5 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;