summaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2016-08-19 15:34:13 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-08-19 15:34:14 -0700
commitaeb1b7f55d5db4eda968de5eb27f04d42df9edc1 (patch)
treefdea1fcbbbb3837bb82b38dc0d578c46020c0c4c /commit.h
parentRelNotes: final batch of topics before -rc1 (diff)
parentcommit: use FLEX_ARRAY in struct merge_remote_desc (diff)
downloadtgif-aeb1b7f55d5db4eda968de5eb27f04d42df9edc1.tar.xz
Merge branch 'rs/pull-signed-tag'
When "git merge-recursive" works on history with many criss-cross merges in "verbose" mode, the names the command assigns to the virtual merge bases could have overwritten each other by unintended reuse of the same piece of memory. * rs/pull-signed-tag: commit: use FLEX_ARRAY in struct merge_remote_desc merge-recursive: fix verbose output for multiple base trees commit: factor out set_merge_remote_desc() commit: use xstrdup() in get_merge_parent()
Diffstat (limited to 'commit.h')
-rw-r--r--commit.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/commit.h b/commit.h
index 23ae0c1d64..32e1a113e5 100644
--- a/commit.h
+++ b/commit.h
@@ -362,9 +362,11 @@ extern void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *
struct merge_remote_desc {
struct object *obj; /* the named object, could be a tag */
- const char *name;
+ char name[FLEX_ARRAY];
};
#define merge_remote_util(commit) ((struct merge_remote_desc *)((commit)->util))
+extern void set_merge_remote_desc(struct commit *commit,
+ const char *name, struct object *obj);
/*
* Given "name" from the command line to merge, find the commit object