summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2007-08-15 15:45:10 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2007-08-15 21:36:37 -0700
commitf34f2b0b384b42f7a0d0d92966c145b05fe55217 (patch)
tree60df5a49c8dad4e4e8b96e719d90c8f4e09aff31
parentpath-list.c: always free strdup'ed paths (diff)
downloadtgif-f34f2b0b384b42f7a0d0d92966c145b05fe55217.tar.xz
Fix read-tree merging more than 3 trees using 3-way merge
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>
-rw-r--r--builtin-read-tree.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/builtin-read-tree.c b/builtin-read-tree.c
index 1967d100f2..f6764b9739 100644
--- a/builtin-read-tree.c
+++ b/builtin-read-tree.c
@@ -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)
{
@@ -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));
@@ -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);