mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-06 18:03:32 +00:00
diff: fix leaks in diff printing
This commit is contained in:
parent
354268ca48
commit
9568660f62
@ -325,9 +325,14 @@ static int diff_binary(git_diff_output *output, git_patch *patch)
|
|||||||
old_data, old_len, new_data, new_len)) < 0)
|
old_data, old_len, new_data, new_len)) < 0)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
return giterr_set_after_callback_function(
|
error = giterr_set_after_callback_function(
|
||||||
output->binary_cb(patch->delta, &binary, output->payload),
|
output->binary_cb(patch->delta, &binary, output->payload),
|
||||||
"git_patch");
|
"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)
|
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.old_prefix);
|
||||||
git__free((char *)patch->diff_opts.new_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)
|
if (patch->flags & GIT_DIFF_PATCH_ALLOCATED)
|
||||||
git__free(patch);
|
git__free(patch);
|
||||||
}
|
}
|
||||||
|
@ -578,6 +578,9 @@ int git_diff_print(
|
|||||||
giterr_set_after_callback_function(error, "git_diff_print");
|
giterr_set_after_callback_function(error, "git_diff_print");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
git__free(pi.nfile);
|
||||||
|
git__free(pi.ofile);
|
||||||
|
|
||||||
git_buf_free(&buf);
|
git_buf_free(&buf);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "filebuf.h"
|
#include "filebuf.h"
|
||||||
|
#include "repository.h"
|
||||||
|
|
||||||
static git_repository *repo;
|
static git_repository *repo;
|
||||||
|
|
||||||
@ -497,7 +498,7 @@ void test_diff_binary__blob_to_blob(void)
|
|||||||
opts.id_abbrev = GIT_OID_HEXSZ;
|
opts.id_abbrev = GIT_OID_HEXSZ;
|
||||||
|
|
||||||
repo = cl_git_sandbox_init("renames");
|
repo = cl_git_sandbox_init("renames");
|
||||||
cl_git_pass(git_repository_index(&index, repo));
|
cl_git_pass(git_repository_index__weakptr(&index, repo));
|
||||||
|
|
||||||
cl_git_append2file("renames/untimely.txt", "Oh that crazy Kipling!\r\n");
|
cl_git_append2file("renames/untimely.txt", "Oh that crazy Kipling!\r\n");
|
||||||
cl_git_pass(git_index_add_bypath(index, "untimely.txt"));
|
cl_git_pass(git_index_add_bypath(index, "untimely.txt"));
|
||||||
@ -532,4 +533,7 @@ void test_diff_binary__blob_to_blob(void)
|
|||||||
|
|
||||||
git__free(diff_data.old_path);
|
git__free(diff_data.old_path);
|
||||||
git__free(diff_data.new_path);
|
git__free(diff_data.new_path);
|
||||||
|
|
||||||
|
git_buf_free(&diff_data.old_binary_base85);
|
||||||
|
git_buf_free(&diff_data.new_binary_base85);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user