mirror of
https://github.com/git/git.git
synced 2026-08-04 07:01:05 +00:00
line-log: avoid redundant copy that leaks in process_ranges
When `bloom_filter_check()` indicates that a commit does not touch any of the tracked paths, `line_log_process_ranges_arbitrary_commit()` propagates the current ranges to the parent by calling `line_log_data_copy()` and passing the copy to add_line_range(). However, `add_line_range()` always makes its own copy internally (via line_log_data_copy or line_log_data_merge), so the caller's copy is never freed and leaks every time this path is taken. Pass range directly to `add_line_range()` instead of making a redundant intermediate copy. The callee's internal copy handles ownership correctly. Pointed out by Coverity. Assisted-by: Claude Opus 4.6 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
c3f89beb73
commit
da82221086
@@ -1141,8 +1141,7 @@ int line_log_process_ranges_arbitrary_commit(struct rev_info *rev, struct commit
|
||||
|
||||
if (range) {
|
||||
if (commit->parents && !bloom_filter_check(rev, commit, range)) {
|
||||
struct line_log_data *prange = line_log_data_copy(range);
|
||||
add_line_range(rev, commit->parents->item, prange);
|
||||
add_line_range(rev, commit->parents->item, range);
|
||||
clear_commit_line_range(rev, commit);
|
||||
} else if (commit->parents && commit->parents->next)
|
||||
changed = process_ranges_merge_commit(rev, commit, range);
|
||||
|
||||
Reference in New Issue
Block a user