X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=rerere.c;h=a59f74f76c293efa783103eaf3d167c97b3768ea;hb=d32fad2b89c81ca29128722e0e2f5985426e5e7a;hp=d1d3e753955146cadfaf6da274487a4a369f0521;hpb=4b7acc186f33037178f4d137b2e6099c67492bde;p=git.git diff --git a/rerere.c b/rerere.c index d1d3e7539..a59f74f76 100644 --- a/rerere.c +++ b/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);