shared.c: avoid memory leak during diff

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2010-04-08 00:48:36 +02:00
parent 9bd3a7b1ea
commit ce761fde07
1 changed files with 8 additions and 0 deletions

View File

@ -278,6 +278,10 @@ int cgit_diff_files(const unsigned char *old_sha1,
if ((file1.ptr && buffer_is_binary(file1.ptr, file1.size)) || if ((file1.ptr && buffer_is_binary(file1.ptr, file1.size)) ||
(file2.ptr && buffer_is_binary(file2.ptr, file2.size))) { (file2.ptr && buffer_is_binary(file2.ptr, file2.size))) {
*binary = 1; *binary = 1;
if (file1.size)
free(file1.ptr);
if (file2.size)
free(file2.ptr);
return 0; return 0;
} }
@ -290,6 +294,10 @@ int cgit_diff_files(const unsigned char *old_sha1,
emit_cb.outf = filediff_cb; emit_cb.outf = filediff_cb;
emit_cb.priv = fn; emit_cb.priv = fn;
xdl_diff(&file1, &file2, &diff_params, &emit_params, &emit_cb); xdl_diff(&file1, &file2, &diff_params, &emit_params, &emit_cb);
if (file1.size)
free(file1.ptr);
if (file2.size)
free(file2.ptr);
return 0; return 0;
} }