size_t k;
/* First convert directly into the destination buffer */
- memset (&st, 0, sizeof (st));
+ p_clear(&st, 1);
for (; slen && dlen >= MB_LEN_MAX; dest += k, dlen -= k, src++, slen--)
if ((k = wcrtomb (dest, *src, &st)) == (size_t) (-1))
break;
}
}
-size_t my_mbstowcs (wchar_t ** pwbuf, size_t * pwbuflen, size_t i, char *buf)
+size_t my_mbstowcs (wchar_t ** pwbuf, size_t * pwbuflen, size_t i, const char *buf)
{
wchar_t wc;
mbstate_t st;
size_t wbuflen;
wbuf = *pwbuf, wbuflen = *pwbuflen;
- memset (&st, 0, sizeof (st));
+ p_clear(&st, 1);
for (; (k = mbrtowc (&wc, buf, MB_LEN_MAX, &st)) &&
k != (size_t) (-1) && k != (size_t) (-2); buf += k) {
if (i >= wbuflen) {
memcpy (savebuf, state->wbuf + state->curpos, savelen * sizeof (wchar_t));
/* Convert to wide characters */
- state->curpos = my_mbstowcs (&state->wbuf, &state->wbuflen, from, buf);
+ state->curpos = my_mbstowcs(&state->wbuf, &state->wbuflen, from, buf);
/* Make space for suffix */
if (state->curpos + savelen > state->wbuflen) {
int rv = 0;
- memset (&mbstate, 0, sizeof (mbstate));
+ p_clear(&mbstate, 1);
if (state->wbuf) {
/* Coming back after return 1 */
if (k == (size_t) (-2))
continue;
else if (k && k != 1) {
- memset (&mbstate, 0, sizeof (mbstate));
+ p_clear(&mbstate, 1);
continue;
}
}