diff options
-rw-r--r-- | libavcodec/utils.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 441b8f151f..0f80b1b9b3 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -71,12 +71,17 @@ int avcodec_open(AVCodecContext *avctx, AVCodec *codec) avctx->codec = codec; avctx->frame_number = 0; - avctx->priv_data = av_mallocz(codec->priv_data_size); - if (!avctx->priv_data) - return -ENOMEM; + if (codec->priv_data_size > 0) { + avctx->priv_data = av_mallocz(codec->priv_data_size); + if (!avctx->priv_data) + return -ENOMEM; + } else { + avctx->priv_data = NULL; + } ret = avctx->codec->init(avctx); if (ret < 0) { - free(avctx->priv_data); + if (avctx->priv_data) + free(avctx->priv_data); avctx->priv_data = NULL; return ret; } |