]> code.delx.au - pulseaudio/commitdiff
Plug some memory leaks
authorMaarten Bosmans <mkbosmans@gmail.com>
Sat, 13 Aug 2011 11:43:19 +0000 (13:43 +0200)
committerColin Guthrie <colin@mageia.org>
Mon, 15 Aug 2011 08:41:56 +0000 (09:41 +0100)
These were detected with valgrind.

src/modules/jack/module-jackdbus-detect.c
src/modules/module-device-manager.c
src/modules/module-virtual-source.c
src/modules/raop/raop_client.c

index 864f96b12e1aff4e26e754f3a4542f2d01e69e62..6bbf38b6f79cf6fded532ce579aa8a17b84eec53 100644 (file)
@@ -231,6 +231,7 @@ int pa__init(pa_module *m) {
         pa_log("Failed to parse connect= argument.");
         goto fail;
     }
+    pa_modargs_free(ma);
 
     if (!(connection = pa_dbus_bus_get(m->core, DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
 
index 67baef31ddf0cef62569a1f2b526136fec5ad587..34e653ecc75244925706bb3d4833668bd3bfea4f 100644 (file)
@@ -199,6 +199,7 @@ static void entry_free(struct entry* e) {
 
     pa_xfree(e->description);
     pa_xfree(e->icon);
+    pa_xfree(e);
 }
 
 static pa_bool_t entry_write(struct userdata *u, const char *name, const struct entry *e) {
@@ -769,8 +770,6 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
         t != (PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE))
         return;
 
-    entry = entry_new();
-
     if ((t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) == PA_SUBSCRIPTION_EVENT_SINK_INPUT) {
         pa_sink_input *si;
 
@@ -801,6 +800,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
         if (!(sink = pa_idxset_get_by_index(c->sinks, idx)))
             return;
 
+        entry = entry_new();
         name = pa_sprintf_malloc("sink:%s", sink->name);
 
         old = load_or_initialize_entry(u, entry, name, "sink:");
@@ -830,6 +830,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
         if (source->monitor_of)
             return;
 
+        entry = entry_new();
         name = pa_sprintf_malloc("source:%s", source->name);
 
         old = load_or_initialize_entry(u, entry, name, "source:");
@@ -847,6 +848,8 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
 
         pa_xfree(entry->icon);
         entry->icon = pa_xstrdup(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_ICON_NAME));
+    } else {
+        pa_assert_not_reached();
     }
 
     pa_assert(name);
index 70e327ba311b70ced98a5404e1990f12a3894a1d..7530975e7d50d1424f190d6662a869837b293d3e 100644 (file)
@@ -661,6 +661,7 @@ int pa__init(pa_module*m) {
 
         u->sink_memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL);
         if (!u->sink_memblockq) {
+            pa_sink_new_data_done(&sink_data);
             pa_log("Failed to create sink memblockq.");
             goto fail;
         }
@@ -689,6 +690,7 @@ int pa__init(pa_module*m) {
 
         pa_sink_put(u->sink);
     } else {
+        pa_sink_new_data_done(&sink_data);
         /* optional uplink sink not enabled */
         u->sink = NULL;
     }
index cba7af9a3842ed1bca8708a09812f72c710bd017..118b9d9e5d77f250cc08e04890942c31cf3d5f07 100644 (file)
@@ -385,6 +385,8 @@ void pa_raop_client_free(pa_raop_client* c) {
 
     if (c->rtsp)
         pa_rtsp_client_free(c->rtsp);
+    if (c->sid)
+        pa_xfree(c->sid);
     pa_xfree(c->host);
     pa_xfree(c);
 }