From: Jeff King Date: Tue, 16 Sep 2025 20:20:26 +0000 (-0400) Subject: diff: pass o->use_color directly to fill_metainfo() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12df3c2e99f0692155c8ad083c6dba8c8ee30033;p=thirdparty%2Fgit.git diff: pass o->use_color directly to fill_metainfo() We pass the use_color parameter of fill_metainfo() as a strict boolean, using: want_color(o->use_color) && !pgm to derive its value. But then inside the function, we pass it to diff_get_color(), which expects one of the git_colorbool enum values, and so feeds it to want_color() again. Even though want_color() produces a strict 0/1 boolean, this doesn't produce wrong results because want_color() is idempotent. Since GIT_COLOR_ALWAYS and NEVER are defined as 1 and 0, and because want_color() passes through those values, evaluating "want_color(foo)" and "want_color(want_color(foo))" will return the same result. But as part of a longer strategy to align the types we use for storing these values, let's pass through the colorbool directly. To handle the "&&" case here, we'll convert the presence of "pgm" into "NEVER", which arguably makes the intent of the code more clear anyway. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff --git a/diff.c b/diff.c index bce26af0e3..505819c6c6 100644 --- a/diff.c +++ b/diff.c @@ -4580,7 +4580,7 @@ static void run_diff_cmd(const struct external_diff *pgm, */ fill_metainfo(msg, name, other, one, two, o, p, &must_show_header, - want_color(o->use_color) && !pgm); + pgm ? GIT_COLOR_NEVER : o->use_color); xfrm_msg = msg->len ? msg->buf : NULL; }