[Piglit] [PATCH] shader_runner: Cast isspace inputs to int to silence warnings.

Kenneth Graunke kenneth at whitecape.org
Mon Feb 20 20:31:20 PST 2012


On 02/19/2012 10:45 PM, Vinson Lee wrote:
> Fixes these GCC warnings on Cygwin.
> shader_runner.c: In function ‘strcpy_to_space’:
> shader_runner.c:202:2: warning: array subscript has type ‘char’
> shader_runner.c: In function ‘eat_whitespace’:
> shader_runner.c:216:2: warning: array subscript has type ‘char’
> shader_runner.c: In function ‘eat_text’:
> shader_runner.c:229:2: warning: array subscript has type ‘char’

These are really bizarre warnings.  We're not doing array subscripting 
here at all.  We're calling isspace() on a char.

This is perfectly legal, idiomatic, and common practice.  Isn't the 
whole point of isspace() and friends to tell you what class a 
/character/ is in?  Yes, they're specified with ints, but people use 
chars all the time.  They're supposed to be silently promoted.

IMO, if the Cygwin compiler can't handle isspace() on chars, it's 
broken.  I would just turn off the warning.

My vote on this patch (and the asmparsertest one) would be 'no'.

> Signed-off-by: Vinson Lee<vlee at freedesktop.org>
> ---
>   tests/shaders/shader_runner.c |    6 +++---
>   1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
> index 0722793..82d20f4 100644
> --- a/tests/shaders/shader_runner.c
> +++ b/tests/shaders/shader_runner.c
> @@ -199,7 +199,7 @@ compile_and_bind_program(GLenum target, const char *start, int len)
>   const char *
>   strcpy_to_space(char *dst, const char *src)
>   {
> -	while (!isspace(*src)&&  (*src != '\0'))
> +	while (!isspace((int) *src)&&  (*src != '\0'))
>   		*(dst++) = *(src++);
>
>   	*dst = '\0';
> @@ -213,7 +213,7 @@ strcpy_to_space(char *dst, const char *src)
>   const char *
>   eat_whitespace(const char *src)
>   {
> -	while (isspace(*src)&&  (*src != '\n'))
> +	while (isspace((int) *src)&&  (*src != '\n'))
>   		src++;
>
>   	return src;
> @@ -226,7 +226,7 @@ eat_whitespace(const char *src)
>   const char *
>   eat_text(const char *src)
>   {
> -	while (!isspace(*src)&&  (*src != '\0'))
> +	while (!isspace((int) *src)&&  (*src != '\0'))
>   		src++;
>
>   	return src;


More information about the Piglit mailing list