summaryrefslogtreecommitdiffstats
path: root/src/pulse
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2009-07-12 20:43:21 +0100
committerColin Guthrie <cguthrie@mandriva.org>2009-07-12 21:07:58 +0100
commit61fefd67dab01011d97a06b7e3dd51101d5f5749 (patch)
tree70b85350a67121fbe8186e9efa509b08bc45d5f1 /src/pulse
parent6fdd5846b24dd9346bfa5abae1fd727189681477 (diff)
introspect: Fix two memory issues in port handling code.
First one is a simple typo on an error condition that would have likely caused issues if it ever cropped up. Second issue is that port information is never actually freed if everything works fine.
Diffstat (limited to 'src/pulse')
-rw-r--r--src/pulse/introspect.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index 3414f7de..27a587cb 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -212,8 +212,8 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u
pa_tagstruct_getu32(t, &i.ports[0][j].priority) < 0) {
pa_context_fail(o->context, PA_ERR_PROTOCOL);
- pa_xfree(i.ports);
pa_xfree(i.ports[0]);
+ pa_xfree(i.ports);
pa_proplist_free(i.proplist);
goto finish;
}
@@ -250,6 +250,10 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u
cb(o->context, &i, 0, o->userdata);
}
+ if (i.ports) {
+ pa_xfree(i.ports[0]);
+ pa_xfree(i.ports);
+ }
pa_proplist_free(i.proplist);
}
}
@@ -479,6 +483,10 @@ static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command,
cb(o->context, &i, 0, o->userdata);
}
+ if (i.ports) {
+ pa_xfree(i.ports[0]);
+ pa_xfree(i.ports);
+ }
pa_proplist_free(i.proplist);
}
}