diff: simplify color_moved check when flushing

In diff_flush_patch_all_file_pairs(), we set o->emitted_symbols if and only if o->color_moved is true. That causes the lower-level routines to fill up o->emitted_symbols, which we then analyze in order to do the actual colorizing. But in that final step, we do: if (o->emitted_symbols) { if (o->color_moved) { ...actual coloring... } ...clean up of emitted_symbols... } The inner "if" will always trigger, since we set emitted_symbols only when doing color_moved (it is a little confusing that it is set inside the diff_options struct, but that is for convenience of passing it to the lower-level routines; we always clear it at the end of flushing, since 48edf3a02a (diff: clear emitted_symbols flag after use, 2019-01-24)). Let's simplify the code a bit by just dropping the inner "if" and running its block unconditionally. In theory the current code might be useful if another feature besides color_moved setup and used emitted_symbols, but it would be easy to refactor later to handle that. And in the meantime, this makes further work in this area easier. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Sep 16, 2025 at 16:17 UTC 8efe643e0e0c70b1eff9e96276afecf05684d133
1 file changed +11 -14
diff.c
+11 -14
@@ -6690,20 +6690,17 @@ static void diff_flush_patch_all_file_pairs(struct diff_options *o)
6690 }
6691
6692 if (o->emitted_symbols) {
6693 - if (o->color_moved) {
6694 - struct mem_pool entry_pool;
6695 - struct moved_entry_list *entry_list;
6696 -
6697 - mem_pool_init(&entry_pool, 1024 * 1024);
6698 - entry_list = add_lines_to_move_detection(o,
6699 - &entry_pool);
6700 - mark_color_as_moved(o, entry_list);
6701 - if (o->color_moved == COLOR_MOVED_ZEBRA_DIM)
6702 - dim_moved_lines(o);
6703 -
6704 - mem_pool_discard(&entry_pool, 0);
6705 - free(entry_list);
6706 - }
6693 + struct mem_pool entry_pool;
6694 + struct moved_entry_list *entry_list;
6695 +
6696 + mem_pool_init(&entry_pool, 1024 * 1024);
6697 + entry_list = add_lines_to_move_detection(o, &entry_pool);
6698 + mark_color_as_moved(o, entry_list);
6699 + if (o->color_moved == COLOR_MOVED_ZEBRA_DIM)
6700 + dim_moved_lines(o);
6701 +
6702 + mem_pool_discard(&entry_pool, 0);
6703 + free(entry_list);
6704
6705 for (i = 0; i < esm.nr; i++)
6706 emit_diff_symbol_from_struct(o, &esm.buf[i]);