diff options
author | Taylor Blau <me@ttaylorr.com> | 2025-07-01 05:32:07 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2025-07-01 14:41:53 -0700 |
commit | 3367b6657c456788e37c335bdd3225e517d2c804 (patch) | |
tree | 3942137e7c46e15a853bfaa5243932f827fd4503 /git-gui/lib/commit.tcl | |
parent | b32feae0f1b21faaf8e191e8d3314a32470a536b (diff) |
pack-bitmap: fix memory leak if load_bitmap() failed
After going through the "failed" label, load_bitmap() will return -1,
and its caller (either prepare_bitmap_walk() or prepare_bitmap_git())
will then call free_bitmap_index().
That function would have done:
struct stored_bitmap *sb;
kh_foreach_value(b->bitmaps, sb {
ewah_pool_free(sb->root);
free(sb);
});
, but won't since load_bitmap() already called kh_destroy_oid_map() and
NULL'd the "bitmaps" pointer from within its "failed" label. Thus if you
got part of the way through loading bitmap entries and then failed, you
would leak all of the previous entries that you were able to load
successfully.
The solution is to remove the error handling code in load_bitmap(), because
its caller will always call free_bitmap_index() in case of an error.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-gui/lib/commit.tcl')
0 files changed, 0 insertions, 0 deletions