diff options
author | Max Kellermann <max@duempel.org> | 2009-01-02 17:23:00 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-01-02 17:53:25 +0100 |
commit | 0b6cb4f69355bb59578fd79298adc42574b06c82 (patch) | |
tree | c19e545342020c70d3cd73c667d6ced1c21193ea /src/output | |
parent | ffc0cdb742522ff223ee3a9b99c939a980a2e073 (diff) | |
download | mpd-0b6cb4f69355bb59578fd79298adc42574b06c82.tar.gz mpd-0b6cb4f69355bb59578fd79298adc42574b06c82.tar.xz mpd-0b6cb4f69355bb59578fd79298adc42574b06c82.zip |
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.
Diffstat (limited to 'src/output')
-rw-r--r-- | src/output/jack_plugin.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/output/jack_plugin.c b/src/output/jack_plugin.c index d26658e07..29c0befd5 100644 --- a/src/output/jack_plugin.c +++ b/src/output/jack_plugin.c @@ -33,7 +33,7 @@ struct jack_data { /* configuration */ char *name; - const char *output_ports[2]; + char *output_ports[2]; int ringbuffer_size; /* for srate() only */ @@ -297,8 +297,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]); DEBUG("output_ports: %s %s\n", jd->output_ports[0], jd->output_ports[1]); free(jports); |