summaryrefslogtreecommitdiff
path: root/builtin/am.c
diff options
context:
space:
mode:
authorRene Scharfe <l.s.r@web.de>2017-08-30 17:49:33 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-09-06 23:49:26 (GMT)
commitb36474ff6b4c7d0a4939b7551c576ef3de7e4719 (patch)
treed40425f225b35c69b22d377234571bf7961d8150 /builtin/am.c
parent542627a4f79ffe1c21e759508ee3c6c4f1211be6 (diff)
downloadgit-b36474ff6b4c7d0a4939b7551c576ef3de7e4719.zip
git-b36474ff6b4c7d0a4939b7551c576ef3de7e4719.tar.gz
git-b36474ff6b4c7d0a4939b7551c576ef3de7e4719.tar.bz2
am: release strbuf on error return in hg_patch_to_mail()
Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/am.c')
-rw-r--r--builtin/am.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/builtin/am.c b/builtin/am.c
index 3c50b03..3d38b3f 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -881,6 +881,7 @@ static int split_mail_stgit_series(struct am_state *state, const char **paths,
static int hg_patch_to_mail(FILE *out, FILE *in, int keep_cr)
{
struct strbuf sb = STRBUF_INIT;
+ int rc = 0;
while (!strbuf_getline_lf(&sb, in)) {
const char *str;
@@ -894,19 +895,27 @@ static int hg_patch_to_mail(FILE *out, FILE *in, int keep_cr)
errno = 0;
timestamp = parse_timestamp(str, &end, 10);
- if (errno)
- return error(_("invalid timestamp"));
+ if (errno) {
+ rc = error(_("invalid timestamp"));
+ goto exit;
+ }
- if (!skip_prefix(end, " ", &str))
- return error(_("invalid Date line"));
+ if (!skip_prefix(end, " ", &str)) {
+ rc = error(_("invalid Date line"));
+ goto exit;
+ }
errno = 0;
tz = strtol(str, &end, 10);
- if (errno)
- return error(_("invalid timezone offset"));
+ if (errno) {
+ rc = error(_("invalid timezone offset"));
+ goto exit;
+ }
- if (*end)
- return error(_("invalid Date line"));
+ if (*end) {
+ rc = error(_("invalid Date line"));
+ goto exit;
+ }
/*
* mercurial's timezone is in seconds west of UTC,
@@ -931,9 +940,9 @@ static int hg_patch_to_mail(FILE *out, FILE *in, int keep_cr)
fwrite(sb.buf, 1, sb.len, out);
strbuf_reset(&sb);
}
-
+exit:
strbuf_release(&sb);
- return 0;
+ return rc;
}
/**