On date Sunday 2025-05-04 02:57:16 +0000, softworkz wrote: > From: softworkz <softwo...@hotmail.com> >
> Instead of initializing a new BPrint in each iteration of > the loop, a new BPrint in case of UTF decode error > re-use the same BPrint struct and just clear it > for each iteration. > > Signed-off-by: softworkz <softwo...@hotmail.com> > --- > fftools/textformat/avtextformat.c | 23 ++++++++++++++--------- > 1 file changed, 14 insertions(+), 9 deletions(-) > > diff --git a/fftools/textformat/avtextformat.c > b/fftools/textformat/avtextformat.c > index 1cd9555ca8..b2c3aa3fc7 100644 > --- a/fftools/textformat/avtextformat.c > +++ b/fftools/textformat/avtextformat.c > @@ -311,24 +311,28 @@ void avtext_print_integer(AVTextFormatContext *tctx, > const char *key, int64_t va > > static inline int validate_string(AVTextFormatContext *tctx, char **dstp, > const char *src) > { > - const uint8_t *p, *endp; > + const uint8_t *p, *endp, *srcp = (const uint8_t *)src; > AVBPrint dstbuf; > + AVBPrint bp_invalid_seq; nit: you can discard bp_ for consistency with dstbuf > int invalid_chars_nb = 0, ret = 0; > > + *dstp = NULL; > av_bprint_init(&dstbuf, 0, AV_BPRINT_SIZE_UNLIMITED); > + av_bprint_init(&bp_invalid_seq, 0, AV_BPRINT_SIZE_UNLIMITED); > > - endp = src + strlen(src); > - for (p = src; *p;) { > - uint32_t code; > + endp = srcp + strlen(src); > + for (p = srcp; *p;) { > + int32_t code; > int invalid = 0; > const uint8_t *p0 = p; > > if (av_utf8_decode(&code, &p, endp, > tctx->string_validation_utf8_flags) < 0) { > - AVBPrint bp; > - av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC); > - bprint_bytes(&bp, p0, p-p0); > - av_log(tctx, AV_LOG_DEBUG, > - "Invalid UTF-8 sequence %s found in string '%s'\n", > bp.str, src); > + > + av_bprint_clear(&bp_invalid_seq); > + > + bprint_bytes(&bp_invalid_seq, p0, p - p0); > + > + av_log(tctx, AV_LOG_DEBUG, "Invalid UTF-8 sequence %s found in > string '%s'\n", bp_invalid_seq.str, src); while at it, also quote the invalid string > invalid = 1; > } > > @@ -358,6 +362,7 @@ static inline int validate_string(AVTextFormatContext > *tctx, char **dstp, const > > end: > av_bprint_finalize(&dstbuf, dstp); > + av_bprint_finalize(&bp_invalid_seq, NULL); > return ret; > } Should be good otherwise. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".