summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Palsson <karlp@etactica.com>2016-11-25 13:55:56 +0000
committerUwe Hermann <uwe@hermann-uwe.de>2016-12-06 22:10:14 +0100
commit95e40a0ce2e27ba6ea7c97d9956918336160bf7b (patch)
tree470f431827349ca91cdecb49c26834eee5c472da
parentde22de7f5d6e371f4c8cdd2b211b8e5a1fbe973a (diff)
downloadlibsigrokdecode-95e40a0ce2e27ba6ea7c97d9956918336160bf7b.tar.gz
libsigrokdecode-95e40a0ce2e27ba6ea7c97d9956918336160bf7b.zip
valgrind: safely iterate lists
Old versions triggered valgrind errors as the API method to remove an entry modifies the list that was being iterated. Signed-off-by: Karl Palsson <karlp@etactica.com>
-rw-r--r--decoder.c8
-rw-r--r--srd.c5
2 files changed, 2 insertions, 11 deletions
diff --git a/decoder.c b/decoder.c
index eba5a28..1151f05 100644
--- a/decoder.c
+++ b/decoder.c
@@ -992,13 +992,7 @@ SRD_API int srd_decoder_load_all(void)
*/
SRD_API int srd_decoder_unload_all(void)
{
- GSList *l;
- struct srd_decoder *dec;
-
- for (l = pd_list; l; l = l->next) {
- dec = l->data;
- srd_decoder_unload(dec);
- }
+ g_slist_foreach(pd_list, (GFunc)srd_decoder_unload, NULL);
g_slist_free(pd_list);
pd_list = NULL;
diff --git a/srd.c b/srd.c
index 2947ca8..344919a 100644
--- a/srd.c
+++ b/srd.c
@@ -219,12 +219,9 @@ SRD_API int srd_init(const char *path)
*/
SRD_API int srd_exit(void)
{
- GSList *l;
-
srd_dbg("Exiting libsigrokdecode.");
- for (l = sessions; l; l = l->next)
- srd_session_destroy((struct srd_session *)l->data);
+ g_slist_foreach(sessions, (GFunc)srd_session_destroy, NULL);
srd_decoder_unload_all();
g_slist_free_full(searchpaths, g_free);