diff options
author | Nils Wallménius <nils@rockbox.org> | 2010-12-08 15:42:40 +0000 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2010-12-08 15:42:40 +0000 |
commit | 715749a7f4597e14a81941c16852d2fcec4e1f85 (patch) | |
tree | c75e9203504b35db2e07171e932209ba84dcce5f /apps | |
parent | f51d6e6507681a286cbddab8cb04f6db083f93e9 (diff) | |
download | rockbox-715749a7f4597e14a81941c16852d2fcec4e1f85.tar.gz rockbox-715749a7f4597e14a81941c16852d2fcec4e1f85.zip |
libtremor: merge upstream revision 17526 and 17531, adding some more error checking.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28766 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libtremor/block.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/apps/codecs/libtremor/block.c b/apps/codecs/libtremor/block.c index a86668a521..0eaf7bc820 100644 --- a/apps/codecs/libtremor/block.c +++ b/apps/codecs/libtremor/block.c | |||
@@ -199,7 +199,10 @@ static int _vds_init(vorbis_dsp_state *v,vorbis_info *vi){ | |||
199 | if(!ci->fullbooks){ | 199 | if(!ci->fullbooks){ |
200 | ci->fullbooks=(codebook *)_ogg_calloc(ci->books,sizeof(*ci->fullbooks)); | 200 | ci->fullbooks=(codebook *)_ogg_calloc(ci->books,sizeof(*ci->fullbooks)); |
201 | for(i=0;i<ci->books;i++){ | 201 | for(i=0;i<ci->books;i++){ |
202 | vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]); | 202 | if(ci->book_param[i]==NULL) |
203 | goto abort_books; | ||
204 | if(vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i])) | ||
205 | goto abort_books; | ||
203 | /* decode codebooks are now standalone after init */ | 206 | /* decode codebooks are now standalone after init */ |
204 | vorbis_staticbook_destroy(ci->book_param[i]); | 207 | vorbis_staticbook_destroy(ci->book_param[i]); |
205 | ci->book_param[i]=NULL; | 208 | ci->book_param[i]=NULL; |
@@ -247,6 +250,15 @@ static int _vds_init(vorbis_dsp_state *v,vorbis_info *vi){ | |||
247 | } | 250 | } |
248 | 251 | ||
249 | return(0); | 252 | return(0); |
253 | abort_books: | ||
254 | for(i=0;i<ci->books;i++){ | ||
255 | if(ci->book_param[i]!=NULL){ | ||
256 | vorbis_staticbook_destroy(ci->book_param[i]); | ||
257 | ci->book_param[i]=NULL; | ||
258 | } | ||
259 | } | ||
260 | vorbis_dsp_clear(v); | ||
261 | return -1; | ||
250 | } | 262 | } |
251 | 263 | ||
252 | int vorbis_synthesis_restart(vorbis_dsp_state *v){ | 264 | int vorbis_synthesis_restart(vorbis_dsp_state *v){ |