Thread (1 message) 1 message, 1 author, 2016-06-15

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

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:03:57

Ben Walton [off-list ref] writes:
quoted hunk
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 <redacted>
---
 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help