The attached patch fixes some casts. Note that clang 3.5.0 produces a bunch of other sensible warnings (among not so sensible ones) where fixes aren't really necessary IMHO due to the obviousness in the code.
vasnprintf.c:1874:38: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned int') [-Wsign-conversion] size_t n = dp->dir_start - cp; ~ ~~~~~~~~~~~~~~^~~~ vasnprintf.c:1918:69: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned int') to 'signed char' [-Wconversion] *a.arg[dp->arg_index].a.a_count_schar_pointer = length; ~ ^~~~~~ vasnprintf.c:1921:69: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned int') to 'short' [-Wconversion] *a.arg[dp->arg_index].a.a_count_short_pointer = length; ~ ^~~~~~ vasnprintf.c:1924:67: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned int') to 'int' [-Wsign-conversion] *a.arg[dp->arg_index].a.a_count_int_pointer = length; ~ ^~~~~~ vasnprintf.c:1927:71: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned int') to 'long' [-Wsign-conversion] *a.arg[dp->arg_index].a.a_count_longint_pointer = length; ~ ^~~~~~ vasnprintf.c:4784:50: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned int') [-Wsign-conversion] size_t n = dp->width_end - dp->width_start; ~ ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ vasnprintf.c:4805:54: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned int') [-Wsign-conversion] size_t n = dp->precision_end - dp->precision_start; ~ ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ vasnprintf.c:5528:31: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] length += count; ~~ ^~~~~ vasnprintf.c:5107:35: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned int') [-Wsign-compare] if (count < maxlen ~~~~~ ^ ~~~~~~ I have no idea how much you want to `uglify' the sources... Werner
>From 40c8e8993e7857021160e193783035e3dd52d131 Mon Sep 17 00:00:00 2001 From: Werner Lemberg <w...@gnu.org> Date: Mon, 2 Mar 2015 08:07:54 +0100 Subject: [PATCH] vasnprintf: fix some casts * lib/vasnprintf.c (VASNPRINTF): Use correct DCHAR_T and TCHAR_T types. --- ChangeLog | 6 ++++++ lib/vasnprintf.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 86bab16..794f196 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-03-02 Werner Lemberg <w...@gnu.org> + + vasnprintf: fix some casts + * lib/vasnprintf.c (VASNPRINTF): Use correct DCHAR_T and TCHAR_T + types. + 2015-02-24 Paul Eggert <egg...@cs.ucla.edu> glob, etc.: port to MSVC v18 on MS-Windows 8.1 diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 3797ce1..63933b5 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -1886,7 +1886,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, else { do - result[length++] = (unsigned char) *cp++; + result[length++] = (DCHAR_T) *cp++; while (--n > 0); } } @@ -4793,7 +4793,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, { const FCHAR_T *mp = dp->width_start; do - *fbp++ = (unsigned char) *mp++; + *fbp++ = (TCHAR_T) *mp++; while (--n > 0); } } @@ -4814,7 +4814,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, { const FCHAR_T *mp = dp->precision_start; do - *fbp++ = (unsigned char) *mp++; + *fbp++ = (TCHAR_T) *mp++; while (--n > 0); } } -- 2.2.0.rc1