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.
This commit is contained in:
Linus Torvalds 2005-06-05 23:32:53 -07:00
parent 6ee67f2610
commit a76d74fb71

View File

@ -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;