-static void remove_entry(pa_idxset *s, struct idxset_entry *e) {
- struct idxset_entry **a;
-
- pa_assert(s);
- pa_assert(e);
-
- /* Remove from array */
- a = array_index(s, e->index);
- pa_assert(a && *a && *a == e);
- *a = NULL;
-
- /* Remove from linked list */
- if (e->iterate_next)
- e->iterate_next->iterate_prev = e->iterate_prev;
- else
- s->iterate_list_tail = e->iterate_prev;
-
- if (e->iterate_prev)
- e->iterate_prev->iterate_next = e->iterate_next;
- else
- s->iterate_list_head = e->iterate_next;
-
- /* Remove from hash table */
- if (e->hash_next)
- e->hash_next->hash_prev = e->hash_prev;
-
- if (e->hash_prev)
- e->hash_prev->hash_next = e->hash_next;
- else
- s->hash_table[e->hash_value] = e->hash_next;
-
- if (pa_flist_push(PA_STATIC_FLIST_GET(entries), e) < 0)
- pa_xfree(e);
-
- pa_assert(s->n_entries >= 1);
- s->n_entries--;
-}
-