diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-07-11 19:57:07 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-09-15 21:29:59 +0200 |
commit | 46b586e5b262052f09dfd22d06356c875203c245 (patch) | |
tree | 5b870c6b01c594112502791770c0443ee46517b9 /libavcodec/iff.c | |
parent | f0be9129ad14ae3c94849648d3fdfccbbc3d7fc3 (diff) | |
download | ffmpeg-46b586e5b262052f09dfd22d06356c875203c245.tar.gz |
avcodec/iff: Avoid redundant frees
This code is only called once during init, so none of the buffers
here have been allocated already.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/iff.c')
-rw-r--r-- | libavcodec/iff.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/libavcodec/iff.c b/libavcodec/iff.c index d7eca289ee..d596ad4ba4 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -245,8 +245,6 @@ static int extract_header(AVCodecContext *const avctx) if (s->masking == MASK_HAS_MASK) { if (s->bpp >= 8 && !s->ham) { avctx->pix_fmt = AV_PIX_FMT_RGB32; - av_freep(&s->mask_buf); - av_freep(&s->mask_palbuf); if (s->bpp > 16) { av_log(avctx, AV_LOG_ERROR, "bpp %d too large for palette\n", s->bpp); return AVERROR(ENOMEM); @@ -255,10 +253,8 @@ static int extract_header(AVCodecContext *const avctx) if (!s->mask_buf) return AVERROR(ENOMEM); s->mask_palbuf = av_malloc((2 << s->bpp) * sizeof(uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->mask_palbuf) { - av_freep(&s->mask_buf); + if (!s->mask_palbuf) return AVERROR(ENOMEM); - } } s->bpp++; } else if (s->masking != MASK_NONE && s->masking != MASK_HAS_TRANSPARENT_COLOR) { @@ -272,9 +268,6 @@ static int extract_header(AVCodecContext *const avctx) if (s->video_size && s->planesize * s->bpp * avctx->height > s->video_size) return AVERROR_INVALIDDATA; - av_freep(&s->ham_buf); - av_freep(&s->ham_palbuf); - if (s->ham) { int i, count = FFMIN(palette_size / 3, 1 << s->ham); int ham_count; @@ -290,10 +283,8 @@ static int extract_header(AVCodecContext *const avctx) ham_count = 8 * (1 << s->ham); s->ham_palbuf = av_malloc(extra_space * (ham_count << !!(s->masking == MASK_HAS_MASK)) * sizeof (uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->ham_palbuf) { - av_freep(&s->ham_buf); + if (!s->ham_palbuf) return AVERROR(ENOMEM); - } if (count) { // HAM with color palette attached // prefill with black and palette and set HAM take direct value mask to zero |