Make sure SRC argument is correct when partial character is read.
authordrepper <drepper>
Wed, 26 Nov 1997 04:22:14 +0000 (04:22 +0000)
committerdrepper <drepper>
Wed, 26 Nov 1997 04:22:14 +0000 (04:22 +0000)
wcsmbs/wcsrtombs.c

index b2c0c73..cc21a51 100644 (file)
@@ -59,7 +59,12 @@ __wcsrtombs (dst, src, len, ps)
 
   while (written < len)
     {
 
   while (written < len)
     {
-      wchar_t wc = *run++;
+      wchar_t wc;
+
+      /* Store position of first unprocessed word.  */
+      *src = run;
+
+      wc = *run++;
 
       if (wc < 0 || wc > 0x7fffffff)
        {
 
       if (wc < 0 || wc > 0x7fffffff)
        {
@@ -73,6 +78,7 @@ __wcsrtombs (dst, src, len, ps)
          /* Found the end.  */
          if (dst != NULL)
            *dst = '\0';
          /* Found the end.  */
          if (dst != NULL)
            *dst = '\0';
+         ps->count = 0;
          *src = NULL;
          return written;
        }
          *src = NULL;
          return written;
        }
@@ -120,6 +126,9 @@ __wcsrtombs (dst, src, len, ps)
   /* Store position of first unprocessed word.  */
   *src = run;
 
   /* Store position of first unprocessed word.  */
   *src = run;
 
+  /* Signal that we finished correctly.  */
+  ps->count = 0;
+
   return written;
 }
 weak_alias (__wcsrtombs, wcsrtombs)
   return written;
 }
 weak_alias (__wcsrtombs, wcsrtombs)