Re: [PATCH] Add cast to unsigned char to strverscmp

Corinna Vinschen <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On Nov  7 13:58, Joel Sherrill wrote:
> On Thu, Nov 7, 2024 at 1:06 PM <[email protected]> wrote:
> 
> > On 2024-11-07 09:53, Jeremy Bettis wrote:
> > > GCC 14.2 with -Werror=sign-compare fails on this code.
> > >
> > > Signed-off-by: Jeremy Bettis <[email protected] <mailto:
> > [email protected]>>
> > > ---
> > >   newlib/libc/string/strverscmp.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/newlib/libc/string/strverscmp.c
> > b/newlib/libc/string/strverscmp.c
> > > index 55966335f..e86718faa 100644
> > > --- a/newlib/libc/string/strverscmp.c
> > > +++ b/newlib/libc/string/strverscmp.c
> > > @@ -76,7 +76,7 @@ int strverscmp(const char *l0, const char *r0)
> > >    else if (c!='0') z=0;
> > >    }
> > >
> > > - if (l[dp]<'1' + 9U && r[dp]<'1' + 9U) {

I'm puzzled.  This doesn't look like newlib code.  Newlib's code looks
like this:

        if (l[dp]-'1'<9U && r[dp]-'1'<9U) {

See https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/string/strverscmp.c;hb=HEAD#l79

Given that l and r are unsigned char anyway, the entire expression
is unsigned, so there shouldn't be a sign-compare error in newlib's
version.


Corinna
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.