From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id C22234E81E
	for <ffmpegdev@gitmailbox.com>; Wed,  7 May 2025 23:58:44 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9801C68C023;
	Thu,  8 May 2025 02:58:38 +0300 (EEST)
Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com
 [209.85.128.41])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0EBF9687DC6
 for <ffmpeg-devel@ffmpeg.org>; Thu,  8 May 2025 02:58:32 +0300 (EEST)
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-441d437cfaaso2722705e9.1
 for <ffmpeg-devel@ffmpeg.org>; Wed, 07 May 2025 16:58:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1746662311; x=1747267111; darn=ffmpeg.org;
 h=user-agent:in-reply-to:content-disposition:mime-version:references
 :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc
 :subject:date:message-id:reply-to;
 bh=xICjfu8ffkYjDuYmeyI1wbR2bkp2+72sIZmiGhUt4mk=;
 b=j/yX0EyzhNLUJ17WEEvttLrlM7J6LcfabHyr0qJBa9I59ZB1pbz7kwuOIEHKrzQLsY
 wzCTPQ1YyDtuqvHdMauc5ccjP3eor2uh/aN5f5425yVQzhG995baAI3qQarhgmF6FH/O
 6L9WhrwB0BI3+xbcvcY5THwxUZfcCPXQbJ1ir93xkwEylQcj80TH8VFofJkDUUZWsxAe
 J6J1Mu5YsmQvtN0H9TjglWb0e771NCeSFijilonNzaVycLnfACPOH/4+A+M1PCwbZV/o
 YUqd3vezqE4N27gYjXvZvjoseKevoba+XFsruHUjYyVB8rIm59v0LMCFznNWIMKJn4E/
 f3eg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1746662311; x=1747267111;
 h=user-agent:in-reply-to:content-disposition:mime-version:references
 :mail-followup-to:message-id:subject:cc:to:from:date
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=xICjfu8ffkYjDuYmeyI1wbR2bkp2+72sIZmiGhUt4mk=;
 b=I0x4ER/AtXCdWQ5WGN2YN5Qo2BO6pIyGji/CkMYRGVRs3+RJMbxuQwMSxRyV6gJA1z
 l8H+WXN46Uy+pLHEaHP0uN+HbzM1TkXFwfH44F9O3M3ODosVzsgy91S1b5kLJRSfsLEY
 xWOnmWEh0rURruD5NXUAynZX/F2WxkR47jmDuwwn4xVWJXLbK6xn/m6s8kQxyh5tIPtc
 R119vzA0z0PQpRYVw5rQ7+QA997cfHqRmmNiHAxhWOB4KYn3Pzc7aH1nKVXuV9Xqsuwl
 x2SQg8nv4M4PVFQfY4bxfyrw/5i6vCDtWA977cu8LIYY442W+DurR86yfu4SPk2wHOU7
 kMgw==
X-Gm-Message-State: AOJu0Yx4R+39XN3pdiXL/e/wI726pu7zDWXF4iF5u7oUYU5SLpwHrtDK
 AVUmx4UdxrKHf7UwrYzcio+AtDSUfW607ZJ1Mvlu6DwUQjA8zvuNpFg2Gg==
X-Gm-Gg: ASbGncv+xKPDKJ3n+BihcsHwnhmFkgcu1xzkT+tXYoPGJELf/KOKE6EgIhTNKsw1mlz
 TBQMi6620aG7bQtCNN9L2g5qjlUAPzUr/w6DaAwlKxb3rVqawfqeVkBGNLWLwvnSxFQJkoe5Jgq
 /9mJIUgOJj6ANV/v2bD5a/DReotQpPgS4ZY+PE+2FdA9MjDBiFcKmmkABmRfoVzWRh6ebnpCbYO
 vBhzueBFK6UnFN+Mog3Ge8P3Jmgn/BHYicilD8E+CF5z8JDy3J//MfiLI5zKyyvim0AM5GSIa7O
 ovnkrV+GXQbZ6rrgxs/sYdoeGYWno17oVKMdBHH1OclvsFAZD8o5jMdV7QPs1sPtew+c2HE2kgk
 hCLb3
X-Google-Smtp-Source: AGHT+IEe2mKt9QGh/8ImH+Ae4ijC7V8WzJESfrwbp3qE1DziYlm+TXiAMjdgY2FxKKssW39HbdFk/g==
X-Received: by 2002:a05:6000:40e0:b0:3a0:9f24:7742 with SMTP id
 ffacd0b85a97d-3a0b4a4b4d7mr4059342f8f.41.1746662310868; 
 Wed, 07 May 2025 16:58:30 -0700 (PDT)
Received: from mariano (dynamic-adsl-84-220-189-10.clienti.tiscali.it.
 [84.220.189.10]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-3a0bc05b7f1sm194050f8f.101.2025.05.07.16.58.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 07 May 2025 16:58:30 -0700 (PDT)
Received: by mariano (Postfix, from userid 1000)
 id 90336BFCE8; Thu,  8 May 2025 01:58:28 +0200 (CEST)
Date: Thu, 8 May 2025 01:58:28 +0200
From: Stefano Sabatini <stefasab@gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Message-ID: <aBvzpO4eLdK+kwxO@mariano>
Mail-Followup-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>,
	softworkz <softworkz-at-hotmail.com@ffmpeg.org>
References: <pull.66.v9.ffstaging.FFmpeg.1746260565.ffmpegagent@gmail.com>
 <pull.66.v10.ffstaging.FFmpeg.1746327446.ffmpegagent@gmail.com>
 <26af65e6f2f513b9bdee8fe5d924cab83dc26450.1746327446.git.ffmpegagent@gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <26af65e6f2f513b9bdee8fe5d924cab83dc26450.1746327446.git.ffmpegagent@gmail.com>
User-Agent: Mutt/2.1.4 (2021-12-11)
Subject: Re: [FFmpeg-devel] [PATCH v10 05/15] fftools/avtextformat: Re-use
 BPrint in loop
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: softworkz <softworkz@hotmail.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/aBvzpO4eLdK+kwxO@mariano/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

On date Sunday 2025-05-04 02:57:16 +0000, softworkz wrote:
> From: softworkz <softworkz@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 <softworkz@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-request@ffmpeg.org with subject "unsubscribe".