diff options
author | Max Kellermann <max@duempel.org> | 2009-02-09 16:36:11 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-02-09 16:38:25 +0100 |
commit | 1ac328b553df550c25bd0000e190d4cdd7c54a08 (patch) | |
tree | f18f9adf6240005f4536888311132340256751aa /src/output/shout_mp3.c | |
parent | 7fc25ad567a0b8b4f7c05832adc17e9fdcc2cefb (diff) | |
download | mpd-1ac328b553df550c25bd0000e190d4cdd7c54a08.tar.gz mpd-1ac328b553df550c25bd0000e190d4cdd7c54a08.tar.xz mpd-1ac328b553df550c25bd0000e190d4cdd7c54a08.zip |
shout: clear buffer before calling the encoder
Always assume the buffer is empty before calling the encoder. Always
flush the buffer immediately after there has been added something.
This reduces the risk of buffer overruns, because there will never be
a "rest" in the current buffer.
Diffstat (limited to '')
-rw-r--r-- | src/output/shout_mp3.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/output/shout_mp3.c b/src/output/shout_mp3.c index 86d39fc66..6086c843e 100644 --- a/src/output/shout_mp3.c +++ b/src/output/shout_mp3.c @@ -43,8 +43,8 @@ static int shout_mp3_encoder_clear_encoder(struct shout_data *sd) struct shout_buffer *buf = &sd->buf; int ret; - if ((ret = lame_encode_flush(ld->gfp, buf->data + buf->len, - buf->len)) < 0) + ret = lame_encode_flush(ld->gfp, buf->data, sizeof(buf->data)); + if (ret < 0) g_warning("error flushing lame buffers\n"); lame_close(ld->gfp); @@ -164,7 +164,7 @@ static int shout_mp3_encoder_encode(struct shout_data *sd, bytes_out = lame_encode_buffer_float(ld->gfp, left, right, samples, buf->data, - sizeof(buf->data) - buf->len); + sizeof(buf->data)); g_free(left); if (right != left) |