mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-06-19 19:03:00 +02:00
factorize read_header failure freeing code
Originally committed as revision 13837 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
+7
-18
@@ -156,7 +156,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
|
||||
get_guid(pb, &g);
|
||||
if (memcmp(&g, &asf_header, sizeof(GUID)))
|
||||
goto fail;
|
||||
return -1;
|
||||
get_le64(pb);
|
||||
get_le32(pb);
|
||||
get_byte(pb);
|
||||
@@ -181,7 +181,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
break;
|
||||
}
|
||||
if (gsize < 24)
|
||||
goto fail;
|
||||
return -1;
|
||||
if (!memcmp(&g, &file_header, sizeof(GUID))) {
|
||||
get_guid(pb, &asf->hdr.guid);
|
||||
asf->hdr.file_size = get_le64(pb);
|
||||
@@ -207,11 +207,11 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
|
||||
st = av_new_stream(s, 0);
|
||||
if (!st)
|
||||
goto fail;
|
||||
return AVERROR(ENOMEM);
|
||||
av_set_pts_info(st, 32, 1, 1000); /* 32 bit pts in ms */
|
||||
asf_st = av_mallocz(sizeof(ASFStream));
|
||||
if (!asf_st)
|
||||
goto fail;
|
||||
return AVERROR(ENOMEM);
|
||||
st->priv_data = asf_st;
|
||||
start_time = asf->hdr.preroll;
|
||||
|
||||
@@ -232,7 +232,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
test_for_ext_stream_audio = 1;
|
||||
type = CODEC_TYPE_UNKNOWN;
|
||||
} else {
|
||||
goto fail;
|
||||
return -1;
|
||||
}
|
||||
get_guid(pb, &g);
|
||||
total_size = get_le64(pb);
|
||||
@@ -513,7 +513,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
}
|
||||
#endif
|
||||
} else if (url_feof(pb)) {
|
||||
goto fail;
|
||||
return -1;
|
||||
} else {
|
||||
url_fseek(pb, gsize - 24, SEEK_CUR);
|
||||
}
|
||||
@@ -523,7 +523,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
get_byte(pb);
|
||||
get_byte(pb);
|
||||
if (url_feof(pb))
|
||||
goto fail;
|
||||
return -1;
|
||||
asf->data_offset = url_ftell(pb);
|
||||
asf->packet_size_left = 0;
|
||||
|
||||
@@ -543,17 +543,6 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
for(i=0;i<s->nb_streams;i++) {
|
||||
AVStream *st = s->streams[i];
|
||||
if (st) {
|
||||
av_free(st->priv_data);
|
||||
av_free(st->codec->extradata);
|
||||
}
|
||||
av_free(st);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
#define DO_2BITS(bits, var, defval) \
|
||||
|
||||
Reference in New Issue
Block a user