One of the Mozilla fixes for #1573 (working around liboggplay
authorMonty <xiphmont@xiph.org>
Mon, 26 Apr 2010 14:24:08 +0000 (14:24 +0000)
committerMonty <xiphmont@xiph.org>
Mon, 26 Apr 2010 14:24:08 +0000 (14:24 +0000)
ignoring an error return value) broke chaining by causing
vorbis_synthesis_init() to fail on a second call.  Fixed.

svn path=/trunk/vorbis/; revision=17177

lib/block.c

index 88d1e43..4f78360 100644 (file)
@@ -232,16 +232,17 @@ static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
     v->analysisp=1;
   }else{
     /* finish the codebooks */
-    if(!ci->fullbooks)
+    if(!ci->fullbooks){
       ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
-    for(i=0;i<ci->books;i++){
-      if(ci->book_param[i]==NULL)
-        goto abort_books;
-      if(vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]))
-        goto abort_books;
+      for(i=0;i<ci->books;i++){
+        if(ci->book_param[i]==NULL)
+          goto abort_books;
+        if(vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]))
+          goto abort_books;
         /* decode codebooks are now standalone after init */
-      vorbis_staticbook_destroy(ci->book_param[i]);
-      ci->book_param[i]=NULL;
+        vorbis_staticbook_destroy(ci->book_param[i]);
+        ci->book_param[i]=NULL;
+      }
     }
   }