[FFmpeg-cvslog] avcodec/pngdec: Use internal AVBPrint string when parsing chunks
Andreas Rheinhardt
git at videolan.org
Tue Aug 23 13:21:30 EEST 2022
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Wed Mar 17 15:20:45 2021 +0100| [3d4a5ef5c198b844cd38be7366957d3ea2354792] | committer: Andreas Rheinhardt
avcodec/pngdec: Use internal AVBPrint string when parsing chunks
One saves an allocation in case the string fits into the buffer.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3d4a5ef5c198b844cd38be7366957d3ea2354792
---
libavcodec/pngdec.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 8a197d038d..189c3eee89 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -543,10 +543,8 @@ static int decode_text_chunk(PNGDecContext *s, GetByteContext *gb, int compresse
return AVERROR_INVALIDDATA;
if ((ret = decode_zbuf(&bp, data, data_end, s->avctx)) < 0)
return ret;
+ text = bp.str;
text_len = bp.len;
- ret = av_bprint_finalize(&bp, (char **)&text);
- if (ret < 0)
- return ret;
} else {
text = (uint8_t *)data;
text_len = data_end - text;
@@ -554,8 +552,8 @@ static int decode_text_chunk(PNGDecContext *s, GetByteContext *gb, int compresse
kw_utf8 = iso88591_to_utf8(keyword, keyword_end - keyword);
txt_utf8 = iso88591_to_utf8(text, text_len);
- if (text != data)
- av_free(text);
+ if (compressed)
+ av_bprint_finalize(&bp, NULL);
if (!(kw_utf8 && txt_utf8)) {
av_free(kw_utf8);
av_free(txt_utf8);
More information about the ffmpeg-cvslog
mailing list