Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 22 Aug 2001 18:29:46 +0000 (18:29 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 22 Aug 2001 18:29:46 +0000 (18:29 +0000)
* stdio-common/vfscanf.c: Fix handling of %l[].
Reported by Mitsuru Chinen <mchinen@yamato.ibm.com>.

ChangeLog
stdio-common/vfscanf.c

index 9338377..e3e0b22 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2001-08-22  Ulrich Drepper  <drepper@redhat.com>
 
+       * stdio-common/vfscanf.c: Fix handling of %l[].
+       Reported by Mitsuru Chinen <mchinen@yamato.ibm.com>.
+
        * elf/dl-addr.c (_dl_addr): Fix tests to determine dli_sname.
        * malloc/mtrace.c (tr_where): dli_sname always points to a
        non-empty string if != NULL.
index 3c5bccb..4dc9cfe 100644 (file)
@@ -2090,19 +2090,18 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
                      size_t n;
 
                      /* Convert it into a wide character.  */
-                     n = __mbrtowc (wstr, buf, cnt, &cstate);
+                     buf[0] = c;
+                     n = __mbrtowc (wstr, buf, 1, &cstate);
 
                      if (n == (size_t) -2)
                        {
                          /* Possibly correct character, just not enough
                             input.  */
+                         ++cnt;
                          assert (cnt < MB_CUR_MAX);
                          continue;
                        }
 
-                     if (n != cnt)
-                       encode_error ();
-
                      ++wstr;
                      if ((flags & MALLOC)
                          && wstr == (wchar_t *) *strptr + strsize)