if (roles) {
const char *split_state = NULL;
char *n = NULL;
- while ((n = pa_split(roles, ",", &split_state)))
+ while ((n = pa_split(roles, ",", &split_state))) {
if (n[0] != '\0')
- pa_idxset_put(u->trigger_roles, pa_xstrdup(n), NULL);
+ pa_idxset_put(u->trigger_roles, n, NULL);
+ else
+ pa_xfree(n);
+ }
}
if (pa_idxset_isempty(u->trigger_roles)) {
pa_log_debug("Using role 'phone' as trigger role.");
if (roles) {
const char *split_state = NULL;
char *n = NULL;
- while ((n = pa_split(roles, ",", &split_state)))
+ while ((n = pa_split(roles, ",", &split_state))) {
if (n[0] != '\0')
- pa_idxset_put(u->cork_roles, pa_xstrdup(n), NULL);
+ pa_idxset_put(u->cork_roles, n, NULL);
+ else
+ pa_xfree(n);
+ }
}
if (pa_idxset_isempty(u->cork_roles)) {
pa_log_debug("Using roles 'music' and 'video' as cork roles.");
return -1;
-
}
void pa__done(pa_module *m) {
struct userdata* u;
- char *role;
pa_assert(m);
if (!(u = m->userdata))
return;
- if (u->trigger_roles) {
- while ((role = pa_idxset_steal_first(u->trigger_roles, NULL)))
- pa_xfree(role);
- pa_idxset_free(u->trigger_roles, NULL, NULL);
- }
- if (u->cork_roles) {
- while ((role = pa_idxset_steal_first(u->cork_roles, NULL)))
- pa_xfree(role);
- pa_idxset_free(u->cork_roles, NULL, NULL);
- }
+ if (u->trigger_roles)
+ pa_idxset_free(u->trigger_roles, pa_xfree);
+
+ if (u->cork_roles)
+ pa_idxset_free(u->cork_roles, pa_xfree);
if (u->sink_input_put_slot)
pa_hook_slot_free(u->sink_input_put_slot);
pa_hook_slot_free(u->sink_input_move_finish_slot);
if (u->cork_state)
- pa_hashmap_free(u->cork_state, NULL, NULL);
+ pa_hashmap_free(u->cork_state, NULL);
pa_xfree(u);