fix some small memory leaks

This commit is contained in:
Wim Taymans 2019-03-11 15:50:52 +01:00
parent 4faa28fd96
commit 61ad5ee518
4 changed files with 21 additions and 5 deletions

View file

@ -249,9 +249,18 @@ static void clear_mem(struct node_data *data, struct mem *m)
}
}
static void clear_link(struct node_data *data, struct link *link)
{
link->node_id = SPA_ID_INVALID;
link->target.activation = NULL;
close(link->signalfd);
spa_list_remove(&link->target.link);
}
static void clean_transport(struct node_data *data)
{
struct mem *m;
struct link *l;
if (data->rtsocket_source == NULL)
return;
@ -262,6 +271,10 @@ static void clean_transport(struct node_data *data)
clear_mem(data, m);
pw_array_clear(&data->mems);
pw_array_for_each(l, &data->links)
clear_link(data, l);
pw_array_clear(&data->links);
close(data->rtwritefd);
data->remote_id = SPA_ID_INVALID;
}
@ -1030,10 +1043,7 @@ client_node_set_activation(void *object,
res = -EINVAL;
goto exit;
}
link->node_id = SPA_ID_INVALID;
link->target.activation = NULL;
close(link->signalfd);
spa_list_remove(&link->target.link);
clear_link(data, link);
}
exit:

View file

@ -310,7 +310,8 @@ void pw_module_destroy(struct pw_module *module)
pw_properties_free(module->properties);
dlclose(impl->hnd);
if (dlclose(impl->hnd) != 0)
pw_log_warn("dlclose failed: %s", dlerror());
free(impl);
}

View file

@ -1108,6 +1108,8 @@ void pw_node_destroy(struct pw_node *node)
pw_log_debug("node %p: free", node);
pw_node_emit_free(node);
pw_memblock_free(node->activation);
pw_work_queue_destroy(impl->work);
pw_map_clear(&node->input_port_map);

View file

@ -296,6 +296,9 @@ static void configure_debug(struct support *support, const char *str)
if (n_tokens > 1)
support->categories = pw_split_strv(level[1], ",", INT_MAX, &n_tokens);
if (level)
pw_free_strv(level);
}
/** Get a support interface