aboutsummaryrefslogtreecommitdiffstats
path: root/src/output/shout_output_plugin.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2012-10-01 23:18:33 +0200
committerMax Kellermann <max@duempel.org>2012-10-02 00:17:27 +0200
commitc7748fedab96da650c81f8a9fad7ec61a3bd96df (patch)
tree59fd87906eb254e008530d8a65b6d588476d2901 /src/output/shout_output_plugin.c
parentc392efb4810319fef34b1230185dd0124c4dfb30 (diff)
downloadmpd-c7748fedab96da650c81f8a9fad7ec61a3bd96df.tar.gz
mpd-c7748fedab96da650c81f8a9fad7ec61a3bd96df.tar.xz
mpd-c7748fedab96da650c81f8a9fad7ec61a3bd96df.zip
output/shout: fix memory leak in error handler
Diffstat (limited to 'src/output/shout_output_plugin.c')
-rw-r--r--src/output/shout_output_plugin.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/output/shout_output_plugin.c b/src/output/shout_output_plugin.c
index d6805f542..bebc5e5da 100644
--- a/src/output/shout_output_plugin.c
+++ b/src/output/shout_output_plugin.c
@@ -439,8 +439,13 @@ my_shout_open_device(struct audio_output *ao, struct audio_format *audio_format,
sd->buf.len = 0;
- if (!encoder_open(sd->encoder, audio_format, error) ||
- !write_page(sd, error)) {
+ if (!encoder_open(sd->encoder, audio_format, error)) {
+ shout_close(sd->shout_conn);
+ return false;
+ }
+
+ if (!write_page(sd, error)) {
+ encoder_close(sd->encoder);
shout_close(sd->shout_conn);
return false;
}