]> sigrok.org Git - libsigrok.git/blobdiff - src/hwdriver.c
Finish fixing broken sr_config_list() logic.
[libsigrok.git] / src / hwdriver.c
index fe2a85189bcb917bb8d0bff3196b78bf82bbcd31..13be087aedb3391d35571e63ecc52304ac678523 100644 (file)
@@ -442,6 +442,8 @@ static int check_key(const struct sr_dev_driver *driver,
                return SR_ERR_ARG;
        }
        opstr = op == SR_CONF_GET ? "get" : op == SR_CONF_SET ? "set" : "list";
+       sr_spew("sr_config_%s(): key %d (%s) sdi %p cg %s", opstr, key,
+                       srci->id, sdi, cg ? cg->name : "NULL");
 
        if (sr_config_list(driver, sdi, cg, SR_CONF_DEVICE_OPTIONS, &gvar_opts) != SR_OK) {
                /* Driver publishes no options. */
@@ -614,14 +616,14 @@ SR_API int sr_config_list(const struct sr_dev_driver *driver,
        int ret;
 
        if (!driver || !data)
-               ret = SR_ERR;
+               return SR_ERR;
        else if (!driver->config_list)
-               ret = SR_ERR_ARG;
+               return SR_ERR_ARG;
        else if (key != SR_CONF_SCAN_OPTIONS && key != SR_CONF_DEVICE_OPTIONS) {
                if (check_key(driver, sdi, cg, key, SR_CONF_LIST) != SR_OK)
                        return SR_ERR_ARG;
        }
-       else if ((ret = driver->config_list(key, data, sdi, cg)) == SR_OK)
+       if ((ret = driver->config_list(key, data, sdi, cg)) == SR_OK)
                g_variant_ref_sink(*data);
 
        return ret;