]> sigrok.org Git - libsigrok.git/blobdiff - src/scpi/scpi_libgpib.c
scpi_vxi: fix memory leak for SCPI response data in VXI support code
[libsigrok.git] / src / scpi / scpi_libgpib.c
index 4519a4e70e2da78589c35c779e12287432f28595..5c82bd6f3dee6edd2e27a25292d16667d10fad27 100644 (file)
@@ -169,13 +169,16 @@ SR_PRIV int sr_scpi_gpib_spoll(struct sr_scpi_dev_inst *scpi, char *buf)
 {
        struct scpi_gpib *gscpi = scpi->priv;
 
+       g_mutex_lock(&scpi->scpi_mutex);
        ibrsp(gscpi->descriptor, buf);
 
        if (ibsta & ERR) {
                sr_err("Error while serial polling: iberr = %s.",
                        gpib_error_string(iberr));
+               g_mutex_unlock(&scpi->scpi_mutex);
                return SR_ERR;
        }
+       g_mutex_unlock(&scpi->scpi_mutex);
        sr_spew("Successful serial poll: 0x%x", (uint8_t)buf[0]);
 
        return SR_OK;
@@ -184,6 +187,7 @@ SR_PRIV int sr_scpi_gpib_spoll(struct sr_scpi_dev_inst *scpi, char *buf)
 SR_PRIV const struct sr_scpi_dev_inst scpi_libgpib_dev = {
        .name          = "GPIB",
        .prefix        = "libgpib",
+       .transport     = SCPI_TRANSPORT_LIBGPIB,
        .priv_size     = sizeof(struct scpi_gpib),
        .dev_inst_new  = scpi_gpib_dev_inst_new,
        .open          = scpi_gpib_open,