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 05D834DC34
	for <ffmpegdev@gitmailbox.com>; Wed, 23 Apr 2025 22:46:04 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E2E4B68B329;
	Thu, 24 Apr 2025 01:45:59 +0300 (EEST)
Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com
 [209.85.208.51])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E6946687DDC
 for <ffmpeg-devel@ffmpeg.org>; Thu, 24 Apr 2025 01:45:52 +0300 (EEST)
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-5f63ac6ef0fso830049a12.1
 for <ffmpeg-devel@ffmpeg.org>; Wed, 23 Apr 2025 15:45:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1745448352; x=1746053152; 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=WQRvPJ0BNN35EfFrr4yBG7lP+5gXe5hcfoMvj0abO68=;
 b=P7PC/kBJo+1m4HUcevxZHUVgE5HRZSUab0B9i+2G4gPECiWHNrxEEtlSwBbpaulrE+
 hR0OrIB6Clxgnt4R16pS+FzXx/jtcJ0kqsflMtL7RWbwLamT5Zc/NxE2eh6UVFLpKF5e
 PZ+A1OPQJSrkKNfw1a91X7ymksR21vkSqIznWC/aikk/knpFyK+RfCxyuOuO0v6kKoAk
 859xm4nVOcCXyinKYhvVvlPLVtYHGSh03Af8PUng8+yYdVmRtWOB8kA0q8VDGvFbvYXf
 f6++3nLfa5+A4djXn4lQcaSDuznQT47Fi6DUgqREXPmJZygp62QpaKuwZZQ8Fc88Djum
 OtjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1745448352; x=1746053152;
 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=WQRvPJ0BNN35EfFrr4yBG7lP+5gXe5hcfoMvj0abO68=;
 b=dJWFmnvY5/4fR3RQROvia4DJKWmbqomY8nVp0pm/IxhhMZ70IjcfRSAeoBlLZbbxmh
 aJSGf0CBL4BPGInLT7m0qL9RwCHv7qfLavZj51RvoiquQE8LtsXH+ezrQDzgBUqulMJL
 Mo1BWAKB+gg+zjzV3GyTjkM4vWtSVRQSvAVx1mU8FLgBNuquCDIlETHlxRWUXxsyIE4j
 lplk1r0zBarjJvlIstPCrcuiDZN2xwwO30Sy02zRwfjvT6Mwx74YfXISweAIN8W58MCN
 UbVHK6IEotadjdqn2mWFDl9s4g227CmkELA63V2nwAhD0TWVEZZlq8lnZSsF8WZWOGdR
 sLCw==
X-Gm-Message-State: AOJu0YxUzvU9j6B3S+LadIqATEiXVQYXiEa65Afk8IlNhsFxUh1/YGT1
 uCSTXZ7cOI1iqKdQXbiwW5DvCJmtkLSJy1PUvFBsC70+IPz2SPN1zHYm4Q==
X-Gm-Gg: ASbGncsBGClMrrvxbUVgTQtGVqiWS0tVLzcTOrboUMyKvjbSLUtt6olePoJqZbQoMUd
 Ffnx/MaURsxFHLIntIMmY+sh4/VeX5oaUrfMwJKTbg0pU6Yo+YKDvARDocF86ow3/hIJfNalmn0
 tU8FCWBAL2XonW/D4+GbGqme6bWJmvAylkMlGBhJnun93z9TL22NLjpQAYWC9pzjye4QLtNi5sa
 IQtwx8XDxDdZNfjdSEEn+hBXpT24q1hIYIR3Muv+7ftJXeW8JY6mICHFib3pFKk//HAw5PDuNIR
 Qj6GB4fu2a+zf8ugk1+Qkt29pBgUsJauNuwdhuGHeqoVIkbudFjEM0IiN+vz4cxzkwf10YxF+e2
 jFVeP
X-Google-Smtp-Source: AGHT+IHkbLOqW0edj+YTF4JTGiyjYhssEO1OmWvlcJrxT2v+3JDGRWCC6bDn0JTwlJoRbXIgN8sgAg==
X-Received: by 2002:a05:6402:84c:b0:5f6:d57c:f23d with SMTP id
 4fb4d7f45d1cf-5f6ef1f1672mr90103a12.17.1745448351849; 
 Wed, 23 Apr 2025 15:45:51 -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
 4fb4d7f45d1cf-5f6eb43e1casm215074a12.17.2025.04.23.15.45.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Apr 2025 15:45:51 -0700 (PDT)
Received: by mariano (Postfix, from userid 1000)
 id 985CFBFCE8; Thu, 24 Apr 2025 00:45:49 +0200 (CEST)
Date: Thu, 24 Apr 2025 00:45:49 +0200
From: Stefano Sabatini <stefasab@gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Message-ID: <aAltnTW5e35yOaKB@mariano>
Mail-Followup-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>,
	softworkz <softworkz-at-hotmail.com@ffmpeg.org>
References: <pull.66.v4.ffstaging.FFmpeg.1745189954.ffmpegagent@gmail.com>
 <pull.66.v5.ffstaging.FFmpeg.1745358943.ffmpegagent@gmail.com>
 <c71836fce01816ef8a83e3e63745012a7acb4bce.1745358943.git.ffmpegagent@gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <c71836fce01816ef8a83e3e63745012a7acb4bce.1745358943.git.ffmpegagent@gmail.com>
User-Agent: Mutt/2.1.4 (2021-12-11)
Subject: Re: [FFmpeg-devel] [PATCH v5 03/14] 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/aAltnTW5e35yOaKB@mariano/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

On date Tuesday 2025-04-22 21:55:32 +0000, softworkz wrote:
> From: softworkz <softworkz@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 <softworkz@hotmail.com>
> ---
>  fftools/textformat/avtextformat.c | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/fftools/textformat/avtextformat.c b/fftools/textformat/avtextformat.c
> index 1939a1f739..0a221f4a9a 100644
> --- a/fftools/textformat/avtextformat.c
> +++ b/fftools/textformat/avtextformat.c
> @@ -308,24 +308,25 @@ 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;
>      int invalid_chars_nb = 0, ret = 0;
>  
> +    *dstp = NULL;
>      av_bprint_init(&dstbuf, 0, AV_BPRINT_SIZE_UNLIMITED);
> +    av_bprint_init(&bp, 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);

> +            bprint_bytes(&bp, p0, p - p0);

cosmetical - let's keep it separated to avoid complicating the diff

> +            av_log(tctx, AV_LOG_DEBUG, "Invalid UTF-8 sequence %s found in string '%s'\n", bp.str, src);

I'm not convinced this is really needed, note that the bp is stored in
the stack and is only initialized in case of decode error. We can
theoretically have more than one error in a string, but still there
should be no need to use UNLIMITED and uninit.

Also if we want to use a function scope for bp, it's best to use a
more descriptive name (e.g. bp_invalid_sequence).

>              invalid = 1;
>          }
>  
> @@ -345,7 +346,7 @@ static inline int validate_string(AVTextFormatContext *tctx, char **dstp, const
>          }
>  
>          if (!invalid || tctx->string_validation == AV_TEXTFORMAT_STRING_VALIDATION_IGNORE)

> -            av_bprint_append_data(&dstbuf, p0, p-p0);
> +            av_bprint_append_data(&dstbuf, (const char *)p0, p - p0);

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