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

Re: [PATCH] Use unsigned char to squash compiler warnings

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 2, 2015, 20:29 UTC
Message-ID
<xmqqoaob9m82.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1425324151-5480-1-git-send-email-bdwalton@gmail.com>
Ben Walton <bdwalton@gmail.com> writes:
Show 29 quoted lines
> Sun Studio on Solaris issues warnings about improper initialization
> values being used when defining tolower_trans_tbl in
> ctype.c. tolower_trans_tbl is defined as char[], which studio's
> compiler defaults to signed char[] due to the Solaris ABI. To resolve
> this, instead of supplying -xchar or another option at build time,
> declare tolower_trans_tbl as unsigned char.  Update all appropriate
> references to the new type.
>
> Signed-off-by: Ben Walton <bdwalton@gmail.com>
> ---
>  ctype.c           | 2 +-
>  git-compat-util.h | 2 +-
>  kwset.c           | 8 ++++----
>  kwset.h           | 2 +-
>  4 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/ctype.c b/ctype.c
> index 0bfebb4..fc0225c 100644
> --- a/ctype.c
> +++ b/ctype.c
> @@ -30,7 +30,7 @@ const unsigned char sane_ctype[256] = {
>  };
>  
>  /* For case-insensitive kwset */
> -const char tolower_trans_tbl[256] = {
> +const unsigned char tolower_trans_tbl[256] = {
>  	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
>  	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
>  	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,

It is not obvious from the context but later elements in this array have values above 0x7f. So you are saying your compiler complains when you write:

	signed char ch = 0xff;

which sort of makes sense (because you actually are storing -1 not 255 to the variable). Throughout our codebase (and kwset is a borrowed code that does not count as "our" codebase ;-) we do use unsigned when we mean we want 255 and not -1, and this patch fixes that borrowed code to be in line with the rest.

The conversion looked good from a cursory view; I didn't check it very carefully though.

Thanks.
Previous: Ben WaltonNext: Junio C Hamano
Message 2 of 4 in “Use unsigned char to squash compiler warnings”
  1. Use unsigned char to squash compiler warningsBen Walton, Mar 2, 2015
  2. Junio C HamanoMar 2, 2015
  3. Junio C HamanoMar 4, 2015
  4. Randall S. BeckerMar 4, 2015

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.