diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index effc9a5ac3e518fa4f2ee7beb2839332ab96bd98..d7f742ba7d2e9ee4f84ea1fa0bb8c07aedaf80c0 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;