From 362ca300d6daec137d0a5a2b639f0f74f2929221 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Tue, 18 Nov 2008 22:45:51 +0100
Subject: decoder: pass the correct buffer length to pcm_convert()

When a global audio format is configured (setting
"audio_output_format"), decoder_data() overwrote the "length"
parameter with the size of the output buffer (result of
pcm_convert_size()).  Declare a separate variable for the output
buffer length.
---
 src/decoder_api.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

(limited to 'src/decoder_api.c')

diff --git a/src/decoder_api.c b/src/decoder_api.c
index 0aca4da95..7df94e02f 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -232,13 +232,14 @@ decoder_data(struct decoder *decoder,
 	if (audio_format_equals(&dc.in_audio_format, &dc.out_audio_format)) {
 		data = _data;
 	} else {
-		length = pcm_convert_size(&dc.in_audio_format, length,
-					  &dc.out_audio_format);
-		if (length > conv_buffer_size) {
+		size_t out_length =
+			pcm_convert_size(&dc.in_audio_format, length,
+					 &dc.out_audio_format);
+		if (out_length > conv_buffer_size) {
 			if (conv_buffer != NULL)
 				free(conv_buffer);
-			conv_buffer = xmalloc(length);
-			conv_buffer_size = length;
+			conv_buffer = xmalloc(out_length);
+			conv_buffer_size = out_length;
 		}
 
 		data = conv_buffer;
-- 
cgit v1.2.3