mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/cbs: Remove redundant checks for CodedBitstreamContext.codec
Setting this field happens immediately after the allocation in ff_cbs_init(), so the whole CBS code may presume that any CodedBitstreamContext has this set. Lots of code already presumed this, yet ff_cbs_close() did it inconsistently: It checked before checking whether the CodedBitstreamType has a close function; yet it simply unconditionally read ctx->codec->priv_class. Coverity complained about this in issue #1473564, which this commit fixes. Reviewed-by: Mark Thompson <sw@jkqxz.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
30cd7feb2d
commit
85685297c2
|
@ -94,7 +94,7 @@ int ff_cbs_init(CodedBitstreamContext **ctx_ptr,
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
ctx->log_ctx = log_ctx;
|
ctx->log_ctx = log_ctx;
|
||||||
ctx->codec = type;
|
ctx->codec = type; /* Must be before any error */
|
||||||
|
|
||||||
if (type->priv_data_size) {
|
if (type->priv_data_size) {
|
||||||
ctx->priv_data = av_mallocz(ctx->codec->priv_data_size);
|
ctx->priv_data = av_mallocz(ctx->codec->priv_data_size);
|
||||||
|
@ -119,7 +119,7 @@ int ff_cbs_init(CodedBitstreamContext **ctx_ptr,
|
||||||
|
|
||||||
void ff_cbs_flush(CodedBitstreamContext *ctx)
|
void ff_cbs_flush(CodedBitstreamContext *ctx)
|
||||||
{
|
{
|
||||||
if (ctx->codec && ctx->codec->flush)
|
if (ctx->codec->flush)
|
||||||
ctx->codec->flush(ctx);
|
ctx->codec->flush(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ void ff_cbs_close(CodedBitstreamContext **ctx_ptr)
|
||||||
if (!ctx)
|
if (!ctx)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ctx->codec && ctx->codec->close)
|
if (ctx->codec->close)
|
||||||
ctx->codec->close(ctx);
|
ctx->codec->close(ctx);
|
||||||
|
|
||||||
av_freep(&ctx->write_buffer);
|
av_freep(&ctx->write_buffer);
|
||||||
|
|
Loading…
Reference in New Issue