diff options
author | Lukasz Marek <lukasz.m.luki2@gmail.com> | 2014-11-24 01:11:45 +0100 |
---|---|---|
committer | Lukasz Marek <lukasz.m.luki2@gmail.com> | 2014-11-25 22:18:08 +0100 |
commit | 2a89afb376aebe833bee0b5958cec16c48936b03 (patch) | |
tree | dd8a43b4b6a855ae15f8f8c57da33f3e961520ab /libavcodec/libxvid.c | |
parent | e29153f414f5b2d10e0386abf7921aed4a4fa454 (diff) | |
download | ffmpeg-2a89afb376aebe833bee0b5958cec16c48936b03.tar.gz |
lavc/libxvid: return meaningful error codes
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Diffstat (limited to 'libavcodec/libxvid.c')
-rw-r--r-- | libavcodec/libxvid.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c index 020af326a8..046d2f70a0 100644 --- a/libavcodec/libxvid.c +++ b/libavcodec/libxvid.c @@ -488,6 +488,7 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) if (!x->twopassbuffer || !x->old_twopassbuffer) { av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot allocate 2-pass log buffers\n"); + ret = AVERROR(ENOMEM); goto fail; } x->twopassbuffer[0] = @@ -501,8 +502,9 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) rc2pass2.bitrate = avctx->bit_rate; fd = av_tempfile("xvidff.", &x->twopassfile, 0, avctx); - if (fd == -1) { + if (fd < 0) { av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot write 2-pass pipe\n"); + ret = fd; goto fail; } x->twopassfd = fd; @@ -510,14 +512,19 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) if (!avctx->stats_in) { av_log(avctx, AV_LOG_ERROR, "Xvid: No 2-pass information loaded for second pass\n"); + ret = AVERROR(EINVAL); goto fail; } - if (strlen(avctx->stats_in) > - write(fd, avctx->stats_in, strlen(avctx->stats_in))) { + ret = write(fd, avctx->stats_in, strlen(avctx->stats_in)); + if (ret == -1) + ret = AVERROR(errno); + else if (strlen(avctx->stats_in) > ret) { av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot write to 2-pass pipe\n"); - goto fail; + ret = AVERROR(EIO); } + if (ret < 0) + goto fail; rc2pass2.filename = x->twopassfile; plugins[xvid_enc_create.num_plugins].func = xvid_plugin_2pass2; |