* [PATCH] Use unsigned char to squash compiler warnings
@ 2015-03-02 19:22 Ben Walton
2015-03-02 20:29 ` Junio C Hamano
0 siblings, 1 reply; 4+ messages in thread
From: Ben Walton @ 2015-03-02 19:22 UTC (permalink / raw)
To: gitster; +Cc: git, Ben Walton
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,
diff --git a/git-compat-util.h b/git-compat-util.h
index 3455c5e..5eae2b2 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -694,7 +694,7 @@ static inline size_t xsize_t(off_t len)
}
/* in ctype.c, for kwset users */
-extern const char tolower_trans_tbl[256];
+extern const unsigned char tolower_trans_tbl[256];
/* Sane ctype - no locale, and works with signed chars */
#undef isascii
diff --git a/kwset.c b/kwset.c
index a0f49b3..e6236a0 100644
--- a/kwset.c
+++ b/kwset.c
@@ -80,13 +80,13 @@ struct kwset
struct trie *next[NCHAR]; /* Table of children of the root. */
char *target; /* Target string if there's only one. */
int mind2; /* Used in Boyer-Moore search for one string. */
- char const *trans; /* Character translation table. */
+ unsigned char const *trans; /* Character translation table. */
};
/* Allocate and initialize a keyword set object, returning an opaque
pointer to it. Return NULL if memory is not available. */
kwset_t
-kwsalloc (char const *trans)
+kwsalloc (unsigned char const *trans)
{
struct kwset *kwset;
@@ -381,7 +381,7 @@ kwsprep (kwset_t kws)
register struct kwset *kwset;
register int i;
register struct trie *curr;
- register char const *trans;
+ register unsigned char const *trans;
unsigned char delta[NCHAR];
kwset = (struct kwset *) kws;
@@ -590,7 +590,7 @@ cwexec (kwset_t kws, char const *text, size_t len, struct kwsmatch *kwsmatch)
register int d;
register char const *end, *qlim;
register struct tree const *tree;
- register char const *trans;
+ register unsigned char const *trans;
accept = NULL;
diff --git a/kwset.h b/kwset.h
index a21b2ea..61a134f 100644
--- a/kwset.h
+++ b/kwset.h
@@ -39,7 +39,7 @@ typedef struct kwset_t* kwset_t;
if enough memory cannot be obtained. The argument if non-NULL
specifies a table of character translations to be applied to all
pattern and search text. */
-extern kwset_t kwsalloc(char const *);
+extern kwset_t kwsalloc(unsigned char const *);
/* Incrementally extend the keyword set to include the given string.
Return NULL for success, or an error message. Remember an index
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Use unsigned char to squash compiler warnings
2015-03-02 19:22 [PATCH] Use unsigned char to squash compiler warnings Ben Walton
@ 2015-03-02 20:29 ` Junio C Hamano
[not found] ` <CAP30j1684A=QsA0o+zLMP70V09mFTS_MtiPZB2TrRywYK2NWWw@mail.gmail.com>
0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2015-03-02 20:29 UTC (permalink / raw)
To: Ben Walton; +Cc: git
Ben Walton <bdwalton@gmail.com> writes:
> 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.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-03-04 22:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-02 19:22 [PATCH] Use unsigned char to squash compiler warnings Ben Walton
2015-03-02 20:29 ` Junio C Hamano
[not found] ` <CAP30j1684A=QsA0o+zLMP70V09mFTS_MtiPZB2TrRywYK2NWWw@mail.gmail.com>
2015-03-04 22:11 ` Junio C Hamano
2015-03-04 22:34 ` Randall S. Becker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).