case '-': {
char *name;
- struct module_info *m;
if (!(name = read_string(u)))
goto fail;
- if ((m = pa_hashmap_get(u->module_infos, name))) {
- pa_hashmap_remove(u->module_infos, name);
- module_info_free(m);
- }
-
+ pa_hashmap_remove_and_free(u->module_infos, name);
pa_xfree(name);
break;
u->core = m->core;
u->module = m;
m->userdata = u;
- u->module_infos = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+ u->module_infos = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL, (pa_free_cb_t) module_info_free);
u->pid = (pid_t) -1;
u->fd = -1;
u->fd_type = 0;
pa_close(u->fd);
if (u->module_infos)
- pa_hashmap_free(u->module_infos, (pa_free_cb_t) module_info_free);
+ pa_hashmap_free(u->module_infos);
pa_xfree(u);
}