From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 70467 invoked by alias); 30 Jul 2018 08:49:06 -0000 Mailing-List: contact newlib-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-cvs-owner@sourceware.org Received: (qmail 68534 invoked by uid 10080); 30 Jul 2018 08:48:50 -0000 Date: Mon, 30 Jul 2018 08:49:00 -0000 Message-ID: <20180730084850.68531.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Sebastian Huber To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] ctype: Fix integer type for caseconv_entry::delta X-Act-Checkin: newlib-cygwin X-Git-Author: Sebastian Huber X-Git-Refname: refs/heads/master X-Git-Oldrev: 613a7f90361533fd5310ee836635a1e0864dfa71 X-Git-Newrev: d8d18c3e80b029449240de8b3d970c03674e9617 X-SW-Source: 2018-q3/txt/msg00023.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=d8d18c3e80b029449240de8b3d970c03674e9617 commit d8d18c3e80b029449240de8b3d970c03674e9617 Author: Sebastian Huber Date: Fri Jul 27 09:16:53 2018 +0200 ctype: Fix integer type for caseconv_entry::delta 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 Diff: --- 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 42085ac..7b8a23c 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"