diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index effc9a5ac3..d7f742ba7d 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -584,8 +584,15 @@ int ff_frame_thread_init(AVCodecContext *avctx) } avctx->internal->thread_ctx = fctx = av_mallocz(sizeof(FrameThreadContext)); + if (!fctx) + return AVERROR(ENOMEM); fctx->threads = av_mallocz(sizeof(PerThreadContext) * thread_count); + if (!fctx->threads) { + av_freep(&avctx->internal->thread_ctx); + return AVERROR(ENOMEM); + } + pthread_mutex_init(&fctx->buffer_mutex, NULL); fctx->delaying = 1;