[PATCH] rerere: plug memory leaks upon "rerere forget" failure

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] rerere: plug memory leaks upon "rerere forget" failure

Junio C Hamano

Signed-off-by: Junio C Hamano <[hidden email]>
---
 rerere.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/rerere.c b/rerere.c
index 1693866..a804171 100644
--- a/rerere.c
+++ b/rerere.c
@@ -1052,8 +1052,8 @@ static int rerere_forget_one_path(const char *path, struct string_list *rr)
  handle_cache(path, sha1, rerere_path(id, "thisimage"));
  if (read_mmfile(&cur, rerere_path(id, "thisimage"))) {
  free(cur.ptr);
- return error("Failed to update conflicted state in '%s'",
-     path);
+ error("Failed to update conflicted state in '%s'", path);
+ goto fail_exit;
  }
  cleanly_resolved = !try_merge(id, path, &cur, &result);
  free(result.ptr);
@@ -1062,14 +1062,19 @@ static int rerere_forget_one_path(const char *path, struct string_list *rr)
  break;
  }
 
- if (id->collection->status_nr <= id->variant)
- return error("no remembered resolution for '%s'", path);
+ if (id->collection->status_nr <= id->variant) {
+ error("no remembered resolution for '%s'", path);
+ goto fail_exit;
+ }
 
  filename = rerere_path(id, "postimage");
- if (unlink(filename))
- return (errno == ENOENT
- ? error("no remembered resolution for %s", path)
- : error("cannot unlink %s: %s", filename, strerror(errno)));
+ if (unlink(filename)) {
+ if (errno == ENOENT)
+ error("no remembered resolution for %s", path);
+ else
+ error("cannot unlink %s: %s", filename, strerror(errno));
+ goto fail_exit;
+ };
 
  /*
  * Update the preimage so that the user can resolve the
@@ -1088,6 +1093,10 @@ static int rerere_forget_one_path(const char *path, struct string_list *rr)
  item->util = id;
  fprintf(stderr, "Forgot resolution for %s\n", path);
  return 0;
+
+fail_exit:
+ free(id);
+ return -1;
 }
 
 int rerere_forget(struct pathspec *pathspec)
--
2.8.2-679-g91c6421

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] rerere: plug memory leaks upon "rerere forget" failure

Johannes Sixt-3
Am 12.05.2016 um 01:32 schrieb Junio C Hamano:
> + if (unlink(filename)) {
> + if (errno == ENOENT)
> + error("no remembered resolution for %s", path);
> + else
> + error("cannot unlink %s: %s", filename, strerror(errno));
> + goto fail_exit;
> + };

If you haven't merged this topic yet, you might want to remove this
superfluous empty statement.

-- Hannes

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] rerere: plug memory leaks upon "rerere forget" failure

Junio C Hamano
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html