This is the mail archive of the 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] *scanf: Allow language-dependent radix character

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,

	* 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:
+		      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.)

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