summaryrefslogtreecommitdiff
path: root/git-commit-script
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2026-06-14 06:37:24 +0000
committerJunio C Hamano <gitster@pobox.com>2026-06-14 07:50:47 -0700
commit83ae606c9838b06bde36479756de2ab75b6fbb96 (patch)
treeb6180431c7bec80a1d13e84fc84fa83e63dc334d /git-commit-script
parent159e4d903458ac3ec0aa944aefeadbaf9e83b73c (diff)
merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
clear_or_reinit_internal_opts() is responsible for cleaning up the various data structures in merge_options_internal. It already handles many renames-related structures (dirs_removed, dir_renames, relevant_sources, cached_pairs, deferred, etc.) but does not free renames->pairs[].queue. In the normal code path, resolve_and_process_renames() frees pairs[s].queue and reinitializes it with diff_queue_init() before clear_or_reinit_internal_opts() runs, so the omission is harmless. However, if collect_merge_info() encounters an error and returns early (before resolve_and_process_renames() is ever called), any diff pairs already queued by collect_rename_info()/add_pair() will have their backing array leaked. Fix this by freeing renames->pairs[].queue in the cleanup function. In the normal path the pointer is already NULL (from the earlier diff_queue_init() in resolve_and_process_renames()), so free(NULL) is a safe no-op. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-commit-script')
0 files changed, 0 insertions, 0 deletions