From 1fe129330eb76d6b38884041b7b9a13de427e7a5 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 2 Jan 2009 17:23:00 +0100 Subject: jack: duplicate jack_get_ports() return values JACK documentation states: "The caller is responsible for calling free(3) any non-NULL returned value." This does not seem to include the array elements. Duplicate them after jack_get_ports(), and free only the array. Convert JackData.output_ports to non-const. --- src/output/jack_plugin.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/output/jack_plugin.c b/src/output/jack_plugin.c index d3a718cd1..14bf81b2c 100644 --- a/src/output/jack_plugin.c +++ b/src/output/jack_plugin.c @@ -35,7 +35,7 @@ struct jack_data { /* configuration */ char *name; - const char *output_ports[2]; + char *output_ports[2]; int ringbuffer_size; /* for srate() only */ @@ -299,8 +299,9 @@ mpd_jack_connect(struct jack_data *jd, struct audio_format *audio_format) if (!jd->output_ports[1] && (jports = jack_get_ports(jd->client, NULL, NULL, JackPortIsPhysical | JackPortIsInput))) { - jd->output_ports[0] = jports[0]; - jd->output_ports[1] = jports[1] ? jports[1] : jports[0]; + jd->output_ports[0] = g_strdup(jports[0]); + jd->output_ports[1] = g_strdup(jports[1] != NULL + ? jports[1] : jports[0]); g_debug("output_ports: %s %s", jd->output_ports[0], jd->output_ports[1]); free(jports); -- cgit v1.2.3