From: Bert Vermeulen Date: Fri, 29 Nov 2013 16:32:55 +0000 (+0100) Subject: Fix memory leak when loading session files. X-Git-Tag: libsigrok-0.3.0~519 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=016f2e005ddbc604594c863dca8a89212bf46a5c;p=libsigrok.git Fix memory leak when loading session files. --- diff --git a/session_driver.c b/session_driver.c index b7a10a0f..4c7082ca 100644 --- a/session_driver.c +++ b/session_driver.c @@ -81,11 +81,6 @@ static int receive_data(int fd, int revents, void *cb_data) /* Already done with this instance. */ continue; - if (!(buf = g_try_malloc(CHUNKSIZE))) { - sr_err("%s: buf malloc failed", __func__); - return FALSE; - } - if (!vdev->capfile) { /* No capture file opened yet, or finished with the last * chunked one. */ @@ -133,6 +128,11 @@ static int receive_data(int fd, int revents, void *cb_data) } } + if (!(buf = g_try_malloc(CHUNKSIZE))) { + sr_err("%s: buf malloc failed", __func__); + return FALSE; + } + ret = zip_fread(vdev->capfile, buf, CHUNKSIZE); if (ret > 0) { got_data = TRUE; @@ -155,9 +155,11 @@ static int receive_data(int fd, int revents, void *cb_data) } else { /* There might be more chunks, so don't fall through * to the SR_DF_END here. */ + g_free(buf); return TRUE; } } + g_free(buf); } if (!got_data) {