Message ID | 20210126224800.1246-1-bouyer@netbsd.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] Fix error: array subscript has type 'char' | expand |
On 26/01/2021 22:47, Manuel Bouyer wrote: > Use unsigned char variable, or cast to (unsigned char), for > tolower()/islower() and friends. Fix compiler error > array subscript has type 'char' [-Werror=char-subscripts] > > Signed-off-by: Manuel Bouyer <bouyer@netbsd.org> > Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com> > Release-Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> > --- > tools/libs/light/libxl_qmp.c | 2 +- > tools/xentrace/xentrace.c | 2 +- > xen/tools/symbols.c | 4 ++-- Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> This is totally ugly, but it is a well known totally ugly corner case of C. Non-freestanding bits have to play by C's rules to be compatible. ~Andrew
diff --git a/tools/libs/light/libxl_qmp.c b/tools/libs/light/libxl_qmp.c index c394000ea9..9b638e6f54 100644 --- a/tools/libs/light/libxl_qmp.c +++ b/tools/libs/light/libxl_qmp.c @@ -1249,7 +1249,7 @@ static int qmp_error_class_to_libxl_error_code(libxl__gc *gc, se++; continue; } - if (tolower(*s) != tolower(*se)) + if (tolower((unsigned char)*s) != tolower((unsigned char)*se)) break; s++, se++; } diff --git a/tools/xentrace/xentrace.c b/tools/xentrace/xentrace.c index 4b50b8a53e..a8903ebf46 100644 --- a/tools/xentrace/xentrace.c +++ b/tools/xentrace/xentrace.c @@ -957,7 +957,7 @@ static int parse_cpumask_range(const char *mask_str, xc_cpumap_t map) { unsigned int a, b; int nmaskbits; - char c; + unsigned char c; int in_range; const char *s; diff --git a/xen/tools/symbols.c b/xen/tools/symbols.c index 9f9e2c9900..0b12452616 100644 --- a/xen/tools/symbols.c +++ b/xen/tools/symbols.c @@ -173,11 +173,11 @@ static int read_symbol(FILE *in, struct sym_entry *s) /* include the type field in the symbol name, so that it gets * compressed together */ s->len = strlen(str) + 1; - if (islower(stype) && filename) + if (islower((unsigned char)stype) && filename) s->len += strlen(filename) + 1; s->sym = malloc(s->len + 1); sym = SYMBOL_NAME(s); - if (islower(stype) && filename) { + if (islower((unsigned char)stype) && filename) { sym = stpcpy(sym, filename); *sym++ = '#'; }