From cadbd1245acecf5d91f07834e2820b0e2a91faf9 Mon Sep 17 00:00:00 2001 From: Ramsay Jones Date: Fri, 5 Jun 2020 22:29:24 +0100 Subject: pre-process: fix a compiler array subscript type warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On cygwin, the header is written in such a way as to cause a gcc compiler warning if a plain 'char' is passed to the character classification macros (in this case isdigit). The result is defined only if the parameter is representable as an unsigned char, or if it is EOF. When passing a 'char' type argument to isdigit(), the compiler warns like so: CC pre-process.o In file included from pre-process.c:33: pre-process.c: In function ‘predefine’: pre-process.c:1429:18: warning: array subscript has type ‘char’ [-Wchar-subscripts] 1429 | if (isdigit(buf[0])) { | ~~~^~~ In order to suppress the warning, cast the argument of isdigit() to an 'unsigned char' type. Signed-off-by: Ramsay Jones Signed-off-by: Luc Van Oostenryck --- pre-process.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pre-process.c b/pre-process.c index c8725dc8..d96035e2 100644 --- a/pre-process.c +++ b/pre-process.c @@ -1426,7 +1426,7 @@ void predefine(const char *name, int weak, const char *fmt, ...) va_end(ap); value = __alloc_token(0); - if (isdigit(buf[0])) { + if (isdigit((unsigned char)buf[0])) { token_type(value) = TOKEN_NUMBER; value->number = xstrdup(buf); } else { -- cgit 1.2.3-korg