diff options
| author | Carlos Martín Nieto <cmn@dwim.me> | 2015-06-26 18:31:39 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-06-26 18:31:39 +0200 |
| commit | 9568660f626e314651d550ed8a06ac17e750a02d (patch) | |
| tree | cbbde77724713f62c7f61014d8a1e6d8f7b7e617 /src/diff_patch.c | |
| parent | 354268ca488fc89346d5874b446510f0cc89c007 (diff) | |
| download | libgit2-9568660f626e314651d550ed8a06ac17e750a02d.tar.gz | |
diff: fix leaks in diff printing
Diffstat (limited to 'src/diff_patch.c')
| -rw-r--r-- | src/diff_patch.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/diff_patch.c b/src/diff_patch.c index ec4979a52..0628da6f2 100644 --- a/src/diff_patch.c +++ b/src/diff_patch.c @@ -325,9 +325,14 @@ static int diff_binary(git_diff_output *output, git_patch *patch) old_data, old_len, new_data, new_len)) < 0) return error; - return giterr_set_after_callback_function( + error = giterr_set_after_callback_function( output->binary_cb(patch->delta, &binary, output->payload), "git_patch"); + + git__free((char *) binary.old_file.data); + git__free((char *) binary.new_file.data); + + return error; } static int diff_patch_generate(git_patch *patch, git_diff_output *output) @@ -377,6 +382,9 @@ static void diff_patch_free(git_patch *patch) git__free((char *)patch->diff_opts.old_prefix); git__free((char *)patch->diff_opts.new_prefix); + git__free((char *)patch->binary.old_file.data); + git__free((char *)patch->binary.new_file.data); + if (patch->flags & GIT_DIFF_PATCH_ALLOCATED) git__free(patch); } |
