Thread (151 messages) 151 messages, 6 authors, 2017-05-11

Re: [PATCH 06/26] get_mail_commit_oid(): avoid resource leak

From: Stefan Beller <hidden>
Date: 2017-04-26 21:06:16

On Wed, Apr 26, 2017 at 1:19 PM, Johannes Schindelin
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
When we fail to read, or parse, the file, we still want to close the file
descriptor and release the strbuf.

Reported via Coverity.

Signed-off-by: Johannes Schindelin <redacted>
---
 builtin/am.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/builtin/am.c b/builtin/am.c
index 805f56cec2f..01b700e5e74 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -1359,15 +1359,16 @@ static int get_mail_commit_oid(struct object_id *commit_id, const char *mail)
        struct strbuf sb = STRBUF_INIT;
        FILE *fp = xfopen(mail, "r");
        const char *x;
+       int ret = 0;

        if (strbuf_getline_lf(&sb, fp))
-               return -1;
+               ret = -1;

-       if (!skip_prefix(sb.buf, "From ", &x))
-               return -1;
+       if (!ret && !skip_prefix(sb.buf, "From ", &x))
+               ret = -1;

-       if (get_oid_hex(x, commit_id) < 0)
-               return -1;
+       if (!ret && get_oid_hex(x, commit_id) < 0)
+               ret = -1;
In similar cases of fixing mem leaks, we'd put a label here
and make excessive use of goto, instead of setting ret to -1.
As "ret" and the commands are short, this is visually just as appealing.

Thanks,
Stefan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help