Skip to content

Commit

Permalink
Fix read-tree merging more than 3 trees using 3-way merge
Browse files Browse the repository at this point in the history
For multi-base merges, we allowed read-tree -m to take more than
three trees (the last two are our and their branches, and all the
earlier ones, typically one but potentially more, are used as the
merge base).  Unfortunately, the conversion done by commit 933bf40
broke this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Aug 16, 2007
1 parent 79d7222 commit f34f2b0
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions builtin-read-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@
#include "dir.h"
#include "builtin.h"

#define MAX_TREES 4
static int nr_trees;
static struct tree *trees[4];
static struct tree *trees[MAX_TREES];

static int list_tree(unsigned char *sha1)
{
Expand Down Expand Up @@ -96,7 +97,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
{
int i, newfd, stage = 0;
unsigned char sha1[20];
struct tree_desc t[3];
struct tree_desc t[MAX_TREES];
struct unpack_trees_options opts;

memset(&opts, 0, sizeof(opts));
Expand Down Expand Up @@ -263,6 +264,9 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
opts.head_idx = 1;
}

if (MAX_TREES < nr_trees)
die("I cannot read more than %d trees", MAX_TREES);

for (i = 0; i < nr_trees; i++) {
struct tree *tree = trees[i];
parse_tree(tree);
Expand Down

0 comments on commit f34f2b0

Please sign in to comment.