diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 235c0676d7..801bb482bf 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -844,9 +844,6 @@ int avcodec_open(AVCodecContext *avctx, AVCodec *codec) if(avctx->codec) goto end; - avctx->codec = codec; - avctx->codec_id = codec->id; - avctx->frame_number = 0; if (codec->priv_data_size > 0) { avctx->priv_data = av_mallocz(codec->priv_data_size); if (!avctx->priv_data) @@ -865,9 +862,13 @@ int avcodec_open(AVCodecContext *avctx, AVCodec *codec) goto end; } + avctx->codec = codec; + avctx->codec_id = codec->id; + avctx->frame_number = 0; ret = avctx->codec->init(avctx); if (ret < 0) { av_freep(&avctx->priv_data); + avctx->codec= NULL; goto end; } ret=0;