]> git.alsa-project.org Git - alsa-lib.git/commitdiff
mixer: bag - fix bag_del_all implementation (missing free)
authorJaroslav Kysela <perex@perex.cz>
Fri, 9 May 2025 07:55:00 +0000 (09:55 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 9 May 2025 07:55:00 +0000 (09:55 +0200)
The bag1_t structure must be freed, too.

Fixes: https://github.com/alsa-project/alsa-lib/issues/453
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/mixer/bag.c

index 18a8fbe8a03d1dcce6ddd6612af5d0aa01ea1696..8d06073d86e3a85e9ba259225ddedc4d11eda72c 100644 (file)
@@ -68,6 +68,11 @@ int bag_del(bag_t *bag, void *ptr)
 
 void bag_del_all(bag_t *bag)
 {
-       while (!list_empty(bag))
-               list_del(bag->next);
+       struct list_head *pos, *npos;
+
+       list_for_each_safe(pos, npos, bag) {
+               bag1_t *b = list_entry(pos, bag1_t, list);
+               list_del(&b->list);
+               free(b);
+       }
 }