summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/tty.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/libavformat/tty.c b/libavformat/tty.c
index 432fcc0c3d..9dada16b8a 100644
--- a/libavformat/tty.c
+++ b/libavformat/tty.c
@@ -73,21 +73,20 @@ static int read_header(AVFormatContext *avctx,
AVFormatParameters *ap)
{
TtyDemuxContext *s = avctx->priv_data;
- int width = 0, height = 0, ret;
+ int width = 0, height = 0, ret = 0;
AVStream *st = av_new_stream(avctx, 0);
- if (!st)
- return AVERROR(ENOMEM);
+
+ if (!st) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
st->codec->codec_tag = 0;
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->codec->codec_id = CODEC_ID_ANSI;
- if (s->video_size) {
- ret = av_parse_video_size(&width, &height, s->video_size);
- av_freep(&s->video_size);
- if (ret < 0) {
- av_log (avctx, AV_LOG_ERROR, "Couldn't parse video size.\n");
- return ret;
- }
+ if (s->video_size && (ret = av_parse_video_size(&width, &height, s->video_size)) < 0) {
+ av_log (avctx, AV_LOG_ERROR, "Couldn't parse video size.\n");
+ goto fail;
}
#if FF_API_FORMAT_PARAMETERS
if (ap->width > 0)
@@ -121,7 +120,9 @@ static int read_header(AVFormatContext *avctx,
avio_seek(avctx->pb, 0, SEEK_SET);
}
- return 0;
+fail:
+ av_freep(&s->video_size);
+ return ret;
}
static int read_packet(AVFormatContext *avctx, AVPacket *pkt)