diff options
Diffstat (limited to 'apps/codecs/wavpack.c')
| -rw-r--r-- | apps/codecs/wavpack.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/apps/codecs/wavpack.c b/apps/codecs/wavpack.c index 2804d3e..19c7581 100644 --- a/apps/codecs/wavpack.c +++ b/apps/codecs/wavpack.c @@ -52,6 +52,7 @@ enum codec_status codec_start(struct codec_api* api) WavpackContext *wpc; char error [80]; int bps, nchans, sr_100; + int retval; /* Generic codec initialisation */ ci = api; @@ -70,8 +71,10 @@ enum codec_status codec_start(struct codec_api* api) next_track: - if (codec_init(api)) - return CODEC_ERROR; + if (codec_init(api)) { + retval = CODEC_ERROR; + goto exit; + } while (!*ci->taginfo_ready && !ci->stop_codec) ci->sleep(1); @@ -94,8 +97,10 @@ enum codec_status codec_start(struct codec_api* api) /* Create a decoder instance */ wpc = WavpackOpenFileInput (read_callback, error); - if (!wpc) - return CODEC_ERROR; + if (!wpc) { + retval = CODEC_ERROR; + goto exit; + } bps = WavpackGetBytesPerSample (wpc); nchans = WavpackGetReducedChannels (wpc); @@ -206,5 +211,7 @@ enum codec_status codec_start(struct codec_api* api) if (ci->request_next_track()) goto next_track; - return CODEC_OK; + retval = CODEC_OK; +exit: + return retval; } |