]> sigrok.org Git - sigrok-cli.git/blobdiff - decode.c
parse_probestring: Fix memory leak on error.
[sigrok-cli.git] / decode.c
index 5e05df1d79f307dfc65beb27d291972e04a4d539..0b7d9ee49e200cf6b8fa4010f9f869cdbe209772 100644 (file)
--- a/decode.c
+++ b/decode.c
@@ -179,7 +179,7 @@ int register_pds(const char *opt_pds, char *opt_pd_annotations)
                                            g_strdup(di->inst_id), GINT_TO_POINTER(-1));
 
                /* Remap the probes if needed. */
-               if (srd_inst_probe_set_all(di, probes) != SRD_OK) {
+               if (srd_inst_probe_set_all(di, probes, (g_hash_table_size(probes) + 7) / 8) != SRD_OK) {
                        ret = 1;
                        break;
                }
@@ -331,7 +331,7 @@ int setup_pd_binary(char *opt_pd_binary)
        GSList *l;
        struct srd_decoder *dec;
        int bin_class;
-       char **pds, **pdtok, **keyval, *bin_name;
+       char **pds, **pdtok, **keyval, **bin_name;
 
        pd_binary_visible = g_hash_table_new_full(g_str_hash, g_int_equal,
                        g_free, NULL);
@@ -350,7 +350,7 @@ int setup_pd_binary(char *opt_pd_binary)
                if (g_strv_length(keyval) == 2) {
                        for (l = dec->binary; l; l = l->next, bin_class++) {
                                bin_name = l->data;
-                               if (!canon_cmp(bin_name, keyval[1]))
+                               if (!strcmp(bin_name[0], keyval[1]))
                                        /* Found it. */
                                        break;
                        }
@@ -360,7 +360,7 @@ int setup_pd_binary(char *opt_pd_binary)
                                return 1;
                        }
                        g_debug("cli: Showing protocol decoder %s binary class "
-                                       "%d (%s).", keyval[0], bin_class, bin_name);
+                                       "%d (%s).", keyval[0], bin_class, bin_name[0]);
                } else {
                        /* No class specified: output all of them. */
                        bin_class = -1;
@@ -403,19 +403,19 @@ void show_pd_annotations(struct srd_proto_data *pdata, void *cb_data)
 
        if (opt_loglevel <= SR_LOG_WARN) {
                /* Show only the longest annotation. */
-               printf("%s ", pda->ann_text[0]);
+               printf("%s", pda->ann_text[0]);
        } else if (opt_loglevel >= SR_LOG_INFO) {
                /* Sample numbers and quotes around the longest annotation. */
-               printf("%"PRIu64"-%"PRIu64" ", pdata->start_sample, pdata->end_sample);
+               printf("%"PRIu64"-%"PRIu64"", pdata->start_sample, pdata->end_sample);
                if (opt_loglevel == SR_LOG_INFO) {
-                       printf("\"%s\" ", pda->ann_text[0]);
+                       printf(" \"%s\"", pda->ann_text[0]);
                } else {
                        /* Protocol decoder id, annotation class,
                         * all annotation strings. */
                        ann_descr = g_slist_nth_data(dec->annotations, pda->ann_format);
-                       printf("%s: %s: ", pdata->pdo->proto_id, ann_descr[0]);
+                       printf(" %s: %s:", pdata->pdo->proto_id, ann_descr[0]);
                        for (i = 0; pda->ann_text[i]; i++)
-                               printf("\"%s\" ", pda->ann_text[i]);
+                               printf(" \"%s\"", pda->ann_text[i]);
                }
        }
        printf("\n");