From 30316df5c88b1bc6e9d7aa06bfaf25122c62cd96 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 24 Sep 2018 09:33:09 +0200 Subject: [PATCH] fix some leaks --- src/modules/module-audio-dsp.c | 3 +++ src/modules/module-client-node/client-node.c | 14 +++++++++----- src/modules/spa/spa-monitor.c | 2 ++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/modules/module-audio-dsp.c b/src/modules/module-audio-dsp.c index 5dd0d0c1a..2d4be5b12 100644 --- a/src/modules/module-audio-dsp.c +++ b/src/modules/module-audio-dsp.c @@ -161,6 +161,9 @@ static void *create_object(void *_data, pw_node_set_active(dsp, true); + if (properties) + pw_properties_free(properties); + return dsp; no_resource: diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index da7b6cb5b..dff05bf94 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -140,6 +140,8 @@ struct node { struct port *in_ports[MAX_INPUTS]; struct port *out_ports[MAX_OUTPUTS]; + struct port dummy; + uint32_t n_params; struct spa_pod **params; @@ -1046,10 +1048,12 @@ client_node_port_update(void *data, clear_port(this, port); pw_node_update_ports(impl->this.node); } else { - struct port dummy = { 0 }, *target; + struct port *target; - if (port == NULL) - target = &dummy; + if (port == NULL) { + target = &this->dummy; + spa_zero(this->dummy); + } else target = port; @@ -1061,11 +1065,11 @@ client_node_port_update(void *data, if (port == NULL) { if (direction == SPA_DIRECTION_INPUT) { this->n_inputs++; - this->in_ports[port_id] = &dummy; + this->in_ports[port_id] = target; } else { this->n_outputs++; - this->out_ports[port_id] = &dummy; + this->out_ports[port_id] = target; } pw_node_update_ports(impl->this.node); } diff --git a/src/modules/spa/spa-monitor.c b/src/modules/spa/spa-monitor.c index 49addc6b1..ff1513cfc 100644 --- a/src/modules/spa/spa-monitor.c +++ b/src/modules/spa/spa-monitor.c @@ -119,11 +119,13 @@ static struct monitor_item *add_item(struct pw_spa_monitor *this, &props->dict, support, n_support)) < 0) { + pw_properties_free(props); pw_log_error("can't make factory instance: %d", res); return NULL; } if ((res = spa_handle_get_interface(handle, SPA_TYPE_INTERFACE_Node, &node_iface)) < 0) { pw_log_error("can't get NODE interface: %d", res); + pw_properties_free(props); return NULL; }