Mercurial > libavformat.hg
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)