summaryrefslogtreecommitdiff
path: root/lib/mbrtowc.c
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2020-01-02 23:12:57 +0100
committerBruno Haible <bruno@clisp.org>2020-01-02 23:15:38 +0100
commitc8a1f21d3476a1d11bf6306827d61842893c7b0f (patch)
tree3b40ab73bf785b0752f2612e54a32d0688ea8201 /lib/mbrtowc.c
parent28dcd5adc3beef4832f69b9e980646f0d03ab38e (diff)
downloadgnulib-c8a1f21d3476a1d11bf6306827d61842893c7b0f.tar.gz
mbrtowc: Fix test failures on MSVC (regression by previous commit).
* m4/mbrtowc.m4 (gl_MBRTOWC_STORES_INCOMPLETE): New macro. (gl_FUNC_MBRTOWC): Invoke it. Define MBRTOWC_STORES_INCOMPLETE_BUG. * lib/mbrtowc.c (rpl_mbrtowc): Add workaround for MBRTOWC_STORES_INCOMPLETE_BUG. * doc/posix-functions/mbrtowc.texi: Mention the MSVC bug.
Diffstat (limited to 'lib/mbrtowc.c')
-rw-r--r--lib/mbrtowc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/mbrtowc.c b/lib/mbrtowc.c
index 9cc9f5d026..1cdd1af204 100644
--- a/lib/mbrtowc.c
+++ b/lib/mbrtowc.c
@@ -524,7 +524,13 @@ rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
}
# endif
+# if MBRTOWC_STORES_INCOMPLETE_BUG
+ ret = mbrtowc (&wc, s, n, ps);
+ if (ret < (size_t) -2 && pwc != NULL)
+ *pwc = wc;
+# else
ret = mbrtowc (pwc, s, n, ps);
+# endif
# if MBRTOWC_NUL_RETVAL_BUG
if (ret < (size_t) -2 && !*pwc)