From: Gerhard Sittig Date: Sun, 16 May 2021 17:42:53 +0000 (+0200) Subject: hameg-hmo: free memory that was allocated by SCPI get routines X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=4da62209ddfa3aad12678c7141c19e9c3e8419c1 hameg-hmo: free memory that was allocated by SCPI get routines The SCPI get routines may allocate memory for response data which callers have to free after use. Move an existing assigment such that the initial assignment, the memory allocation, use of response data, and resource release are in closer proximity, and thus are easier to reason about during maintenance. Behaviour does not change. This is motivated by bug #1683. --- diff --git a/src/hardware/hameg-hmo/protocol.c b/src/hardware/hameg-hmo/protocol.c index 3e15d376..26dac0cb 100644 --- a/src/hardware/hameg-hmo/protocol.c +++ b/src/hardware/hameg-hmo/protocol.c @@ -1380,8 +1380,6 @@ SR_PRIV int hmo_receive_data(int fd, int revents, void *cb_data) (void)fd; (void)revents; - data = NULL; - if (!(sdi = cb_data)) return TRUE; @@ -1410,6 +1408,7 @@ SR_PRIV int hmo_receive_data(int fd, int revents, void *cb_data) */ switch (ch->type) { case SR_CHANNEL_ANALOG: + data = NULL; if (sr_scpi_get_block(sdi->conn, NULL, &data) != SR_OK) { if (data) g_byte_array_free(data, TRUE); @@ -1442,6 +1441,7 @@ SR_PRIV int hmo_receive_data(int fd, int revents, void *cb_data) data = NULL; break; case SR_CHANNEL_LOGIC: + data = NULL; if (sr_scpi_get_block(sdi->conn, NULL, &data) != SR_OK) { if (data) g_byte_array_free(data, TRUE);