зеркало из https://github.com/microsoft/git.git
rerere: fix memory leak if rerere images can't be read
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
16758621d5
Коммит
689b8c290d
9
rerere.c
9
rerere.c
|
@ -364,7 +364,7 @@ static int find_conflict(struct string_list *conflict)
|
|||
static int merge(const char *name, const char *path)
|
||||
{
|
||||
int ret;
|
||||
mmfile_t cur, base, other;
|
||||
mmfile_t cur = {NULL, 0}, base = {NULL, 0}, other = {NULL, 0};
|
||||
mmbuffer_t result = {NULL, 0};
|
||||
|
||||
if (handle_file(path, NULL, rerere_path(name, "thisimage")) < 0)
|
||||
|
@ -372,8 +372,10 @@ static int merge(const char *name, const char *path)
|
|||
|
||||
if (read_mmfile(&cur, rerere_path(name, "thisimage")) ||
|
||||
read_mmfile(&base, rerere_path(name, "preimage")) ||
|
||||
read_mmfile(&other, rerere_path(name, "postimage")))
|
||||
return 1;
|
||||
read_mmfile(&other, rerere_path(name, "postimage"))) {
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
ret = ll_merge(&result, path, &base, &cur, "", &other, "", 0);
|
||||
if (!ret) {
|
||||
FILE *f = fopen(path, "w");
|
||||
|
@ -387,6 +389,7 @@ static int merge(const char *name, const char *path)
|
|||
strerror(errno));
|
||||
}
|
||||
|
||||
out:
|
||||
free(cur.ptr);
|
||||
free(base.ptr);
|
||||
free(other.ptr);
|
||||
|
|
Загрузка…
Ссылка в новой задаче