rework sysconf table to treat zero entries as invalid
[musl] / src / multibyte / mbsnrtowcs.c
index c6f0207..68b9960 100644 (file)
@@ -4,15 +4,9 @@
  * unnecessary.
  */
 
-#include <stdlib.h>
-#include <inttypes.h>
 #include <wchar.h>
-#include <errno.h>
-#include <stdio.h>
 
-#include "internal.h"
-
-size_t mbsnrtowcs(wchar_t *wcs, const char **src, size_t n, size_t wn, mbstate_t *st)
+size_t mbsnrtowcs(wchar_t *restrict wcs, const char **restrict src, size_t n, size_t wn, mbstate_t *restrict st)
 {
        size_t l, cnt=0, n2;
        wchar_t *ws, wbuf[256];
@@ -47,6 +41,10 @@ size_t mbsnrtowcs(wchar_t *wcs, const char **src, size_t n, size_t wn, mbstate_t
                                cnt = l;
                                break;
                        }
+                       if (!l) {
+                               s = 0;
+                               break;
+                       }
                        /* have to roll back partial character */
                        *(unsigned *)st = 0;
                        break;