summaryrefslogtreecommitdiff
path: root/apps/codecs
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2010-12-08 15:42:40 +0000
committerNils Wallménius <nils@rockbox.org>2010-12-08 15:42:40 +0000
commit715749a7f4597e14a81941c16852d2fcec4e1f85 (patch)
treec75e9203504b35db2e07171e932209ba84dcce5f /apps/codecs
parentf51d6e6507681a286cbddab8cb04f6db083f93e9 (diff)
downloadrockbox-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/codecs')
-rw-r--r--apps/codecs/libtremor/block.c14
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);
253abort_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
252int vorbis_synthesis_restart(vorbis_dsp_state *v){ 264int vorbis_synthesis_restart(vorbis_dsp_state *v){