git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] utf8: use ARRAY_SIZE() in git_wcwidth()

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 12, 2019, 01:57 UTC
Message-ID
<xmqqo8ymenep.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20191011184123.17376-1-dev+git@drbeat.li>
Beat Bolli <dev+git@drbeat.li> writes:
Show 11 quoted lines
> diff --git a/utf8.c b/utf8.c
> index 3b42fadffd..5c8f151f75 100644
> --- a/utf8.c
> +++ b/utf8.c
> @@ -95,13 +95,11 @@ static int git_wcwidth(ucs_char_t ch)
>  		return -1;
>  
>  	/* binary search in table of non-spacing characters */
> -	if (bisearch(ch, zero_width, sizeof(zero_width)
> -				/ sizeof(struct interval) - 1))
> +	if (bisearch(ch, zero_width, ARRAY_SIZE(zero_width) - 1))

I wondered if we want a wrapper similar to QSORT() macro so that we do not have to repeat zero_width (and double_width below) like this, but bisearch() itself is local to this file and there are only these two callers, so it probably is not worth it.

The original is waiting for a bug when zero_width changes its type, by not dividing with sizeof(*zero_width). The use of ARRAY_SIZE() is quite appropriate here.

Thanks.
Show 9 quoted lines
>  		return 0;
>  
>  	/* binary search in table of double width characters */
> -	if (bisearch(ch, double_width, sizeof(double_width)
> -				/ sizeof(struct interval) - 1))
> +	if (bisearch(ch, double_width, ARRAY_SIZE(double_width) - 1))
>  		return 2;
>  
>  	return 1;
Previous: Beat Bolli
Message 3 of 3 in “utf8: use ARRAY_SIZE() in git_wcwidth()”
  1. utf8: use ARRAY_SIZE() in git_wcwidth()Beat Bolli, Oct 11, 2019
  2. utf8: use ARRAY_SIZE() in git_wcwidth()Beat Bolli, Oct 11, 2019
  3. Junio C HamanoOct 12, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.