diff rmdec.c @ 3486:f68fcc8b8e9e libavformat

factorize read_header failure freeing code
author bcoudurier
date Fri, 20 Jun 2008 17:16:56 +0000
parents 7a0230981402
children f9c75fed4805
line wrap: on
line diff
--- a/rmdec.c	Fri Jun 20 07:27:44 2008 +0000
+++ b/rmdec.c	Fri Jun 20 17:16:56 2008 +0000
@@ -297,7 +297,7 @@
 
     for(;;) {
         if (url_feof(pb))
-            goto fail;
+            return -1;
         tag = get_le32(pb);
         tag_size = get_be32(pb);
         get_be16(pb);
@@ -311,7 +311,7 @@
                tag_size);
 #endif
         if (tag_size < 10 && tag != MKTAG('D', 'A', 'T', 'A'))
-            goto fail;
+            return -1;
         switch(tag) {
         case MKTAG('P', 'R', 'O', 'P'):
             /* file header */
@@ -336,7 +336,7 @@
         case MKTAG('M', 'D', 'P', 'R'):
             st = av_new_stream(s, 0);
             if (!st)
-                goto fail;
+                return AVERROR(ENOMEM);
             st->id = get_be16(pb);
             get_be32(pb); /* max bit rate */
             st->codec->bit_rate = get_be32(pb); /* bit rate */
@@ -369,12 +369,6 @@
     get_be32(pb); /* next data header */
     rm->curpic_num = -1;
     return 0;
-
- fail:
-    for(i=0;i<s->nb_streams;i++) {
-        av_free(s->streams[i]);
-    }
-    return AVERROR(EIO);
 }
 
 static int get_num(ByteIOContext *pb, int *len)