]> sigrok.org Git - libsigrok.git/blobdiff - session_driver.c
gmc-mh-1x-2x: Don't put driver-specific things in sr/SR namespace.
[libsigrok.git] / session_driver.c
index b7a10a0f93337457d4bf7994cc12273e87333627..5041092b4c5e760cc53ce3346c9ba42f6ead3b1b 100644 (file)
@@ -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) {
@@ -289,7 +291,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
 
        if (!(vdev->archive = zip_open(vdev->sessionfile, 0, &ret))) {
                sr_err("Failed to open session file '%s': "
-                      "zip error %d\n", vdev->sessionfile, ret);
+                      "zip error %d.", vdev->sessionfile, ret);
                return SR_ERR;
        }