From: softworkz <softwo...@hotmail.com>

Instead of initializing a new BPrint in each iteration of
the loop, 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 1939a1f739..5ba427d6f2 100644
--- a/fftools/textformat/avtextformat.c
+++ b/fftools/textformat/avtextformat.c
@@ -308,24 +308,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;
     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);
             invalid = 1;
         }
 
@@ -355,6 +359,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;
 }
 
-- 
ffmpeg-codebot

_______________________________________________
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".

Reply via email to