diff options
Diffstat (limited to 'lib/btowc.c')
-rw-r--r-- | lib/btowc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/btowc.c b/lib/btowc.c index caadbd7608..4defbdda72 100644 --- a/lib/btowc.c +++ b/lib/btowc.c @@ -22,6 +22,7 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> wint_t btowc (int c) @@ -32,7 +33,14 @@ btowc (int c) wchar_t wc; buf[0] = c; +#if HAVE_MBRTOWC + mbstate_t state; + memset (&state, 0, sizeof (mbstate_t)); + size_t ret = mbrtowc (&wc, buf, 1, &state); + if (!(ret == (size_t)(-1) || ret == (size_t)(-2))) +#else if (mbtowc (&wc, buf, 1) >= 0) +#endif return wc; } return WEOF; |