motech-lps-30x: fix several compiler warnings
Check pointers' validity before dereferencing them. Explicitly assign a default value to variables, before conversion routines conditionally assign the "real" value (and don't in case of conversion errors). This avoids processing "garbage" data. Strictly speaking I cannot see how the conversion routine returns OK and has _not_ assigned a result. But the explicit assignment won't harm either, and matches the fallback when the conversion fails (detectibly). Which means that runtime behaviour won't change. This was reported by clang's scan-build.
This commit is contained in:
parent
fe535a89c9
commit
e4924d752b
|
@ -650,6 +650,8 @@ static int config_list(uint32_t key, GVariant **data,
|
||||||
case SR_CONF_DEVICE_OPTIONS:
|
case SR_CONF_DEVICE_OPTIONS:
|
||||||
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
|
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
|
||||||
case SR_CONF_CHANNEL_CONFIG:
|
case SR_CONF_CHANNEL_CONFIG:
|
||||||
|
if (!devc || !devc->model)
|
||||||
|
return SR_ERR_ARG;
|
||||||
if (devc->model->modelid <= LPS_303) {
|
if (devc->model->modelid <= LPS_303) {
|
||||||
/* The 1-channel models. */
|
/* The 1-channel models. */
|
||||||
*data = g_variant_new_strv(channel_modes, 1);
|
*data = g_variant_new_strv(channel_modes, 1);
|
||||||
|
@ -675,9 +677,13 @@ static int config_list(uint32_t key, GVariant **data,
|
||||||
*data = std_gvar_array_u32(ARRAY_AND_SIZE(devopts_cg_ch3));
|
*data = std_gvar_array_u32(ARRAY_AND_SIZE(devopts_cg_ch3));
|
||||||
break;
|
break;
|
||||||
case SR_CONF_VOLTAGE_TARGET:
|
case SR_CONF_VOLTAGE_TARGET:
|
||||||
|
if (!devc || !devc->model)
|
||||||
|
return SR_ERR_ARG;
|
||||||
*data = std_gvar_min_max_step_array(devc->model->channels[ch_idx].voltage);
|
*data = std_gvar_min_max_step_array(devc->model->channels[ch_idx].voltage);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_CURRENT_LIMIT:
|
case SR_CONF_CURRENT_LIMIT:
|
||||||
|
if (!devc || !devc->model)
|
||||||
|
return SR_ERR_ARG;
|
||||||
*data = std_gvar_min_max_step_array(devc->model->channels[ch_idx].current);
|
*data = std_gvar_min_max_step_array(devc->model->channels[ch_idx].current);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -76,6 +76,8 @@ static void process_line(struct sr_dev_inst *sdi)
|
||||||
int auxint;
|
int auxint;
|
||||||
|
|
||||||
devc = sdi->priv;
|
devc = sdi->priv;
|
||||||
|
if (!devc)
|
||||||
|
return;
|
||||||
|
|
||||||
switch (devc->acq_req_pending) {
|
switch (devc->acq_req_pending) {
|
||||||
case 0: /* Should not happen... */
|
case 0: /* Should not happen... */
|
||||||
|
@ -87,6 +89,7 @@ static void process_line(struct sr_dev_inst *sdi)
|
||||||
case AQ_U2:
|
case AQ_U2:
|
||||||
case AQ_I1:
|
case AQ_I1:
|
||||||
case AQ_I2:
|
case AQ_I2:
|
||||||
|
dbl = 0.0;
|
||||||
if (sr_atod_ascii(devc->buf, &dbl) != SR_OK) {
|
if (sr_atod_ascii(devc->buf, &dbl) != SR_OK) {
|
||||||
sr_err("Failed to convert '%s' to double, errno=%d %s",
|
sr_err("Failed to convert '%s' to double, errno=%d %s",
|
||||||
devc->buf, errno, g_strerror(errno));
|
devc->buf, errno, g_strerror(errno));
|
||||||
|
@ -94,6 +97,7 @@ static void process_line(struct sr_dev_inst *sdi)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AQ_STATUS:
|
case AQ_STATUS:
|
||||||
|
auxint = 0;
|
||||||
if (sr_atoi(devc->buf, &auxint) != SR_OK) {
|
if (sr_atoi(devc->buf, &auxint) != SR_OK) {
|
||||||
sr_err("Failed to convert '%s' to int, errno=%d %s",
|
sr_err("Failed to convert '%s' to int, errno=%d %s",
|
||||||
devc->buf, errno, g_strerror(errno));
|
devc->buf, errno, g_strerror(errno));
|
||||||
|
|
Loading…
Reference in New Issue