X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=decode.c;h=2bcc0ae13f53306a2743abc7e692695523a5eff9;hp=8a52edac4aea5610b3443f1bcd59869f1a9d5a6a;hb=7930408d655ee55d4aee839eb8feee707d9e5843;hpb=e9e4dc4d7ecc678cffaa9a93034319f7e02f33b9 diff --git a/decode.c b/decode.c index 8a52eda..2bcc0ae 100644 --- a/decode.c +++ b/decode.c @@ -179,7 +179,7 @@ static int register_pd(char *opt_pds, char *opt_pd_annotations) * in the stack. */ if (!opt_pd_annotations) { - g_hash_table_insert(pd_ann_visible, g_strdup(di->inst_id), + g_hash_table_insert(pd_ann_visible, g_strdup(di->decoder->id), g_slist_append(NULL, GINT_TO_POINTER(-1))); } if (di_prior) { @@ -194,6 +194,10 @@ static int register_pd(char *opt_pds, char *opt_pd_annotations) g_hash_table_remove(pd_ann_visible, di_prior->inst_id); } di_prior = di; + g_free(pd_name); + g_hash_table_destroy(pd_opthash); + g_hash_table_destroy(options); + pd_opthash = options = NULL; } if (pd_opthash) @@ -204,7 +208,6 @@ static int register_pd(char *opt_pds, char *opt_pd_annotations) g_hash_table_destroy(channels); g_strfreev(pdtokens); - g_free(pd_name); return ret; } @@ -272,6 +275,7 @@ static void map_pd_inst_channels(void *key, void *value, void *user_data) } srd_inst_channel_set_all(di, channel_indices); + g_hash_table_destroy(channel_indices); } void map_pd_channels(struct sr_dev_inst *sdi) @@ -426,10 +430,11 @@ void show_pd_annotations(struct srd_proto_data *pdata, void *cb_data) if (!pd_ann_visible) return; - if (!g_hash_table_lookup_extended(pd_ann_visible, pdata->pdo->di->inst_id, - NULL, (void **)&ann_list)) + if (!g_hash_table_lookup_extended(pd_ann_visible, pdata->pdo->di->decoder->id, + NULL, (void **)&ann_list)) { /* Not in the list of PDs whose annotations we're showing. */ return; + } dec = pdata->pdo->di->decoder; pda = pdata->data;