From: Elijah Newren Date: Wed, 19 Jun 2024 03:00:13 +0000 (+0000) Subject: merge-ort: extract handling of priv member into reusable function X-Git-Tag: v2.46.0-rc1~20^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e79bdb426c7033cf431cd5cb628196fd19303da0;p=thirdparty%2Fgit.git merge-ort: extract handling of priv member into reusable function In preparation for a subsequent commit which will ensure we do not forget to maintain our invariants for the priv member in error codepaths, extract the necessary functionality out into a separate function. This change is cosmetic at this point, and introduces no changes beyond an extra assertion sanity check. Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- diff --git a/merge-ort.c b/merge-ort.c index eaede6cead..700ddfccb9 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -5000,6 +5000,26 @@ static void merge_check_renames_reusable(struct merge_result *result, /*** Function Grouping: merge_incore_*() and their internal variants ***/ +static void move_opt_priv_to_result_priv(struct merge_options *opt, + struct merge_result *result) +{ + /* + * opt->priv and result->priv are a bit weird. opt->priv contains + * information that we can re-use in subsequent merge operations to + * enable our cached renames optimization. The best way to provide + * that to subsequent merges is putting it in result->priv. + * However, putting it directly there would mean retrofitting lots + * of functions in this file to also take a merge_result pointer, + * which is ugly and annoying. So, we just make sure at the end of + * the merge (the outer merge if there are internal recursive ones) + * to move it. + */ + assert(opt->priv && !result->priv); + result->priv = opt->priv; + result->_properly_initialized = RESULT_INITIALIZED; + opt->priv = NULL; +} + /* * Originally from merge_trees_internal(); heavily adapted, though. */ @@ -5060,11 +5080,8 @@ redo: /* existence of conflicted entries implies unclean */ result->clean &= strmap_empty(&opt->priv->conflicted); } - if (!opt->priv->call_depth) { - result->priv = opt->priv; - result->_properly_initialized = RESULT_INITIALIZED; - opt->priv = NULL; - } + if (!opt->priv->call_depth) + move_opt_priv_to_result_priv(opt, result); } /*