"git merge-base" names its internal workhorse helper function "get_merge_bases_many_0()", which takes one "can we get away without clearing the object->flags bits because we know we are the last caller?" parameter. Make the parameter into a flags word to make it extensible and rename it to get_merge_bases_opt(). Use it to turn get_merge_bases_many_dirty() wrapper into a C-preprocessor macro. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- commit.c | 19 ++++++------------- commit.h | 6 ++++-- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/commit.c b/commit.c index 59bd18e67c..92d23b1082 100644 --- a/commit.c +++ b/commit.c @@ -942,15 +942,15 @@ static void mark_redundant(struct commit **array, int cnt) free(filled_index); } -static struct commit_list *get_merge_bases_many_0(struct commit *one, - int n, - struct commit **twos, - int cleanup) +struct commit_list *get_merge_bases_opt(struct commit *one, + int n, struct commit **twos, + unsigned flags) { struct commit_list *list; struct commit **rslt; struct commit_list *result; int cnt, i; + int cleanup = !!(flags & MB_POSTCLEAN); result = merge_bases_many(one, n, twos); @@ -997,19 +997,12 @@ struct commit_list *get_merge_bases_many(struct commit *one, int n, struct commit **twos) { - return get_merge_bases_many_0(one, n, twos, 1); -} - -struct commit_list *get_merge_bases_many_dirty(struct commit *one, - int n, - struct commit **twos) -{ - return get_merge_bases_many_0(one, n, twos, 0); + return get_merge_bases_opt(one, n, twos, 0); } struct commit_list *get_merge_bases(struct commit *one, struct commit *two) { - return get_merge_bases_many_0(one, 1, &two, 1); + return get_merge_bases_opt(one, 1, &two, MB_POSTCLEAN); } /* diff --git a/commit.h b/commit.h index 32e1a113e5..557f2814b7 100644 --- a/commit.h +++ b/commit.h @@ -253,8 +253,10 @@ extern struct commit_list *get_merge_bases(struct commit *rev1, struct commit *r extern struct commit_list *get_merge_bases_many(struct commit *one, int n, struct commit **twos); extern struct commit_list *get_octopus_merge_bases(struct commit_list *in); -/* To be used only when object flags after this call no longer matter */ -extern struct commit_list *get_merge_bases_many_dirty(struct commit *one, int n, struct commit **twos); +#define MB_POSTCLEAN 01 +extern struct commit_list *get_merge_bases_opt(struct commit *one, int n, struct commit **twos, unsigned flags); + +#define get_merge_bases_many_dirty(one, n, twos) get_merge_bases_opt((one),(n),(twos),MB_POSTCLEAN) /* largest positive number a signed 32-bit integer can contain */ #define INFINITE_DEPTH 0x7fffffff -- 2.10.1-631-gb2c64dcf30