[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