decoder: eliminate gotos in decodeStart()

http://xkcd.com/292/
This commit is contained in:
Max Kellermann 2008-10-31 16:29:45 +01:00
parent a1ca32168c
commit f098db149e
1 changed files with 12 additions and 7 deletions

View File

@ -59,19 +59,25 @@ static void decodeStart(void)
will be available then */
while (!inStream.ready) {
if (dc.command != DECODE_COMMAND_NONE)
goto stop;
if (dc.command != DECODE_COMMAND_NONE) {
input_stream_close(&inStream);
return;
}
ret = input_stream_buffer(&inStream);
if (ret < 0)
goto stop;
if (ret < 0) {
input_stream_close(&inStream);
return;
}
}
/* for http streams, seekable is determined in input_stream_buffer */
dc.seekable = inStream.seekable;
if (dc.command == DECODE_COMMAND_STOP)
goto stop;
if (dc.command == DECODE_COMMAND_STOP) {
input_stream_close(&inStream);
return;
}
ret = false;
if (!song_is_file(song)) {
@ -156,7 +162,6 @@ static void decodeStart(void)
: DECODE_ERROR_FILE;
}
stop:
if (close_instream)
input_stream_close(&inStream);
}