[patch] *scanf: Allow language-dependent radix character
Corinna Vinschen
vinschen@redhat.com
Tue Dec 17 23:24:00 GMT 2013
On Dec 17 17:32, Craig Howland wrote:
>
> On 12/17/2013 04:54 PM, Corinna Vinschen wrote:
> >
> >If you wonder about the (unsigned char) casts, these are necessary
> >because the variable 'c' is of type signed int, which breaks the
> >comparison for non-ASCII char values without the cast.
> >
> >The code creating the decpt value at the start of vfwscanf is the same
> >code as in vfwprintf.
> >
> >
> >Thanks for any review,
> >Corinna
> >
> >
> > * vfscanf.c (__SVFSCANF_R): Handle radix char language-dependent
> > per POSIX.
> > (__SVFWSCANF_R): Ditto.
> >
> >
> >Index: libc/stdio/vfscanf.c
> >===================================================================
> >RCS file: /cvs/src/src/newlib/libc/stdio/vfscanf.c,v
> >retrieving revision 1.54
> >diff -u -p -r1.54 vfscanf.c
> >--- libc/stdio/vfscanf.c 29 Apr 2013 21:06:23 -0000 1.54
> >+++ libc/stdio/vfscanf.c 17 Dec 2013 21:51:21 -0000
> >@@ -162,6 +162,7 @@ Supporting OS subroutines required:
> > #ifdef FLOATING_POINT
> >...
> >+ if (decptpos > 0)
> >+ {
> >+ /* We read part of a multibyte decimal point,
> >+ but the rest is invalid or we're at EOF,
> >+ so back off. */
> >+ while (decptpos-- > 0)
> >+ {
> >+ _ungetc_r (rptr, decpt[decptpos], fp);
> Shouldn't it be (unsigned char) decpt[decptpos] here, too? (The
> same probably goes for the other unget. Our ungetc directly warns
> against giving back a signed char.)
Per POSIX, ungetc is supposed to do the cast to unsigned char by itself,
and newlib's _ungetc_r does that, so it's safe in this scenario.
Thanks for reviewing,
Corinna
--
Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20131217/ed7f8e22/attachment.sig>
More information about the Newlib
mailing list