X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fhameg-hmo%2Fapi.c;h=8638a790bc56806954dfe017d8b44d7571e44d71;hb=0f523f2b45e84114add85cec5a97aed3f85f95e6;hp=ea2afef621867ed774703497f7588e961ee6b48e;hpb=b0e80e9aa9a7398fa01a7949deb17640ca3c7d47;p=libsigrok.git diff --git a/src/hardware/hameg-hmo/api.c b/src/hardware/hameg-hmo/api.c index ea2afef6..8638a790 100644 --- a/src/hardware/hameg-hmo/api.c +++ b/src/hardware/hameg-hmo/api.c @@ -509,6 +509,7 @@ static int hmo_setup_channels(const struct sr_dev_inst *sdi) struct sr_channel *ch; struct dev_context *devc; struct sr_scpi_dev_inst *scpi; + int ret; devc = sdi->priv; scpi = sdi->conn; @@ -528,8 +529,10 @@ static int hmo_setup_channels(const struct sr_dev_inst *sdi) (*model->scpi_dialect)[SCPI_CMD_SET_ANALOG_CHAN_STATE], ch->index + 1, ch->enabled); - if (sr_scpi_send(scpi, command) != SR_OK) + if (sr_scpi_send(scpi, command) != SR_OK) { + g_free(pod_enabled); return SR_ERR; + } state->analog_channels[ch->index].state = ch->enabled; setup_changed = TRUE; break; @@ -547,8 +550,10 @@ static int hmo_setup_channels(const struct sr_dev_inst *sdi) (*model->scpi_dialect)[SCPI_CMD_SET_DIG_CHAN_STATE], ch->index, ch->enabled); - if (sr_scpi_send(scpi, command) != SR_OK) + if (sr_scpi_send(scpi, command) != SR_OK) { + g_free(pod_enabled); return SR_ERR; + } state->digital_channels[ch->index] = ch->enabled; setup_changed = TRUE; @@ -559,19 +564,23 @@ static int hmo_setup_channels(const struct sr_dev_inst *sdi) } } + ret = SR_OK; for (i = 0; i < model->digital_pods; i++) { if (state->digital_pods[i] == pod_enabled[i]) continue; g_snprintf(command, sizeof(command), (*model->scpi_dialect)[SCPI_CMD_SET_DIG_POD_STATE], i + 1, pod_enabled[i]); - if (sr_scpi_send(scpi, command) != SR_OK) - return SR_ERR; + if (sr_scpi_send(scpi, command) != SR_OK) { + ret = SR_ERR; + break; + } state->digital_pods[i] = pod_enabled[i]; setup_changed = TRUE; } - g_free(pod_enabled); + if (ret != SR_OK) + return ret; if (setup_changed && hmo_update_sample_rate(sdi) != SR_OK) return SR_ERR;