This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/2] ctype: Fix integer type for caseconv_entry::delta


On Jul 27 09:37, Sebastian Huber wrote:
> The commit 46ba1675c457324b0eeef4670a09101ef3f34c50 accidently changed a
> bit-field from signed to unsigned.  The caseconv_entry::delta must be a
> signed integer, see also "newlib/libc/ctype/caseconv.t".
> 
> Unfortunately, a standard GCC/Newlib build is done without
> -Wsign-conversion.  Using this warning option would have helped to avoid
> this bug:
> 
> caseconv.t:2:22: warning: unsigned conversion from 'int' to 'unsigned int:17' changes value from '-32' to '131040' [-Wsign-conversion]
>    {0x0061, 25, TOUP, -32},
> 
> Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
> ---
>  newlib/libc/ctype/towctrans_l.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/newlib/libc/ctype/towctrans_l.c b/newlib/libc/ctype/towctrans_l.c
> index 42085ac78..7b8a23c9c 100644
> --- a/newlib/libc/ctype/towctrans_l.c
> +++ b/newlib/libc/ctype/towctrans_l.c
> @@ -39,7 +39,7 @@ static struct caseconv_entry {
>    uint_least32_t first: 21;
>    uint_least8_t diff: 8;
>    uint_least8_t mode: 2;
> -  uint_least32_t delta: 17;
> +  int_least32_t delta: 17;
>  } __attribute__ ((packed))
>  caseconv_table [] = {
>  #include "caseconv.t"
> -- 
> 2.13.7

Thanks, please apply series.


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]