With "const unsigned (*parent)[20]", "parent + 1" is not the same as "&parent[1]"... Signed-off-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx> --- I triggered this bug by "git diff a...b", where a and b have 4 merge bases. I am really too tired to add a test case, though... builtin-diff.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/builtin-diff.c b/builtin-diff.c index 9334589..846cafb 100644 --- a/builtin-diff.c +++ b/builtin-diff.c @@ -158,7 +158,8 @@ static int builtin_diff_combined(struct rev_info *revs, parent = xmalloc(ents * sizeof(*parent)); /* Again, the revs are all reverse */ for (i = 0; i < ents; i++) - hashcpy((unsigned char*)parent + i, ent[ents - 1 - i].item->sha1); + hashcpy((unsigned char*)&parent[i], + ent[ents - 1 - i].item->sha1); diff_tree_combined(parent[0], parent + 1, ents - 1, revs->dense_combined_merges, revs); return 0; -- 1.5.0.1.2218.g2de79 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html