Bruno, is it okay to apply this patch to silence these compiler warnings? | vasnprintf.c:2378: warning: declaration of 'buf' shadows a previous local | vasnprintf.c:1502: warning: shadowed declaration is here
Here, using two different local variables buf with different types and nested scopes is plain confusing. | printf-args.c: In function printf_fetchargs: | printf-args.c:93: warning: signed and unsigned type in conditional expression Here, wint_t can be either signed or unsigned, so to be sure we aren't causing any problems with inadvertent sign extension, the extra cast seems the best way to go. From: Eric Blake <e...@byu.net> Date: Fri, 30 Oct 2009 10:24:45 -0600 Subject: [PATCH] vasnprintf: avoid compiler warnings * lib/vasnprintf.c (VASNPRINTF): Avoid shadowing our own local variables. * lib/printf-args.c (PRINTF_FETCHARGS): Avoid type mismatch. Signed-off-by: Eric Blake <e...@byu.net> --- ChangeLog | 5 +++++ lib/printf-args.c | 5 +++-- lib/vasnprintf.c | 36 ++++++++++++++++++------------------ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7f11ba4..80c4c8c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2009-10-30 Eric Blake <e...@byu.net> + vasnprintf: avoid compiler warnings + * lib/vasnprintf.c (VASNPRINTF): Avoid shadowing our own local + variables. + * lib/printf-args.c (PRINTF_FETCHARGS): Avoid type mismatch. + build: avoid compiler warnings * lib/fchmodat.c (lchmod): Mark unused variables. * lib/getopt.c (_getopt_initialize): Likewise. diff --git a/lib/printf-args.c b/lib/printf-args.c index 4978914..e994239 100644 --- a/lib/printf-args.c +++ b/lib/printf-args.c @@ -1,5 +1,6 @@ /* Decomposed printf argument list. - Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc. + Copyright (C) 1999, 2002-2003, 2005-2007, 2009 Free Software + Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -89,7 +90,7 @@ PRINTF_FETCHARGS (va_list args, arguments *a) where wint_t is 'unsigned short'. */ ap->a.a_wide_char = (sizeof (wint_t) < sizeof (int) - ? va_arg (args, int) + ? (wint_t) va_arg (args, int) : va_arg (args, wint_t)); break; #endif diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 661445c..ab66288 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -2375,16 +2375,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, characters = 0; while (precision > 0) { - char buf[64]; /* Assume MB_CUR_MAX <= 64. */ + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg_end == 0) /* Found the terminating null wide character. */ break; # if HAVE_WCRTOMB - count = wcrtomb (buf, *arg_end, &state); + count = wcrtomb (cbuf, *arg_end, &state); # else - count = wctomb (buf, *arg_end); + count = wctomb (cbuf, *arg_end); # endif if (count < 0) { @@ -2420,16 +2420,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, characters = 0; for (;;) { - char buf[64]; /* Assume MB_CUR_MAX <= 64. */ + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg_end == 0) /* Found the terminating null wide character. */ break; # if HAVE_WCRTOMB - count = wcrtomb (buf, *arg_end, &state); + count = wcrtomb (cbuf, *arg_end, &state); # else - count = wctomb (buf, *arg_end); + count = wctomb (cbuf, *arg_end); # endif if (count < 0) { @@ -2470,20 +2470,20 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, # endif for (remaining = characters; remaining > 0; ) { - char buf[64]; /* Assume MB_CUR_MAX <= 64. */ + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); # if HAVE_WCRTOMB - count = wcrtomb (buf, *arg, &state); + count = wcrtomb (cbuf, *arg, &state); # else - count = wctomb (buf, *arg); + count = wctomb (cbuf, *arg); # endif if (count <= 0) /* Inconsistency. */ abort (); - memcpy (tmpptr, buf, count); + memcpy (tmpptr, cbuf, count); tmpptr += count; arg++; remaining -= count; @@ -2552,20 +2552,20 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, ENSURE_ALLOCATION (xsum (length, characters)); for (remaining = characters; remaining > 0; ) { - char buf[64]; /* Assume MB_CUR_MAX <= 64. */ + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); # if HAVE_WCRTOMB - count = wcrtomb (buf, *arg, &state); + count = wcrtomb (cbuf, *arg, &state); # else - count = wctomb (buf, *arg); + count = wctomb (cbuf, *arg); # endif if (count <= 0) /* Inconsistency. */ abort (); - memcpy (result + length, buf, count); + memcpy (result + length, cbuf, count); length += count; arg++; remaining -= count; @@ -2581,21 +2581,21 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, # endif while (arg < arg_end) { - char buf[64]; /* Assume MB_CUR_MAX <= 64. */ + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); # if HAVE_WCRTOMB - count = wcrtomb (buf, *arg, &state); + count = wcrtomb (cbuf, *arg, &state); # else - count = wctomb (buf, *arg); + count = wctomb (cbuf, *arg); # endif if (count <= 0) /* Inconsistency. */ abort (); ENSURE_ALLOCATION (xsum (length, count)); - memcpy (result + length, buf, count); + memcpy (result + length, cbuf, count); length += count; arg++; } -- 1.6.4.2