commit 2ae45b1c436f5e25cf4aad9f95f7640eb4affcac from: Tobias Heider date: Sat Feb 14 22:41:08 2026 UTC Refactor info cleanup into _info_free() commit - 05b36ee22c78d4ce6e03b06920bf428c44a97eda commit + 2ae45b1c436f5e25cf4aad9f95f7640eb4affcac blob - 42429877be1598461e50f1d6738cbfa3944c519c blob + 7cbbe889753607cde67e5baef9e8732ecfe034c5 --- siomixer.c +++ siomixer.c @@ -51,7 +51,20 @@ struct info *firstent(struct info *, char *); struct info *nextent(struct info *, int); void ondesc(void *, struct sioctl_desc *, int); void onctl(void *, unsigned, unsigned); +static void _info_free(struct info *); +static void +_info_free(struct info *i) +{ + if (i == NULL) + return; + if (i->widget) + audiowidget_free(i->widget); + if (i->timeout) + g_source_remove(i->timeout); + free(i); +} + /* * compare two sioctl_desc structures, used to sort infolist */ @@ -109,10 +122,7 @@ ondesc(void *arg, struct sioctl_desc *d, int curval) for (pi = &s.infolist; (i = *pi) != NULL; pi = &i->next) { if (d->addr == i->desc.addr) { *pi = i->next; - if (i->widget) { - audiowidget_free(i->widget); - } - free(i); + _info_free(i); break; } }