valgrind: Clear more unfreed memory issues
authorKarl Palsson <karlp@etactica.com>
Tue, 29 Nov 2016 14:32:29 +0000 (14:32 +0000)
committerUwe Hermann <uwe@hermann-uwe.de>
Mon, 20 Feb 2017 15:30:50 +0000 (16:30 +0100)
Command line used for checking:

  $ valgrind -v --leak-check=full ./sigrok-cli \
    -i rockband_wireless_keyboard_wii/midi_key4.sr \
    -P uart:baudrate=31250,midi -P uart:baudrate=31250,midi

Signed-off-by: Karl Palsson <karlp@etactica.com>
decode.c

index 8a52edac4aea5610b3443f1bcd59869f1a9d5a6a..adbe73b32e90a80209f7a3f31a1248a23d971f9b 100644 (file)
--- a/decode.c
+++ b/decode.c
@@ -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)