diff options
author | Bruno Haible <bruno@clisp.org> | 2010-12-27 14:28:11 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2010-12-27 14:29:25 +0100 |
commit | 777cb5e9cb12fd56d998f2eaa9348dd4e0078cac (patch) | |
tree | 860a9b97679852b6ffd2d6ad06d41d76a79bb0ed /tests/test-mbrtowc.c | |
parent | 94879b67cd7832e8a60df732a23fb764f2a15075 (diff) | |
download | gnulib-777cb5e9cb12fd56d998f2eaa9348dd4e0078cac.tar.gz |
mbrtowc: Work around a Solaris 7 bug.
* m4/mbrtowc.m4 (gl_MBRTOWC_NULL_ARG1): New macro.
(gl_MBRTOWC_NULL_ARG2): Renamed from gl_MBRTOWC_NULL_ARG.
(gl_FUNC_MBRTOWC): Update. Define MBRTOWC_NULL_ARG2_BUG instead of
MBRTOWC_NULL_ARG_BUG. Invoke gl_MBRTOWC_NULL_ARG1 and define
MBRTOWC_NULL_ARG1_BUG.
* lib/mbrtowc.c (rpl_mbrtowc): Use MBRTOWC_NULL_ARG2_BUG instead of
MBRTOWC_NULL_ARG_BUG. Handle MBRTOWC_NULL_ARG1_BUG.
* tests/test-mbrtowc.c (main): Test support of a NULL first argument.
* doc/posix-functions/mbrtowc.texi: Mention the Solaris 7 bug.
Diffstat (limited to 'tests/test-mbrtowc.c')
-rw-r--r-- | tests/test-mbrtowc.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tests/test-mbrtowc.c b/tests/test-mbrtowc.c index 5477677c16..8022d025f7 100644 --- a/tests/test-mbrtowc.c +++ b/tests/test-mbrtowc.c @@ -1,5 +1,5 @@ /* Test of conversion of multibyte character to wide character. - Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2008-2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -143,6 +143,11 @@ main (int argc, char *argv[]) ASSERT (mbsinit (&state)); input[1] = '\0'; + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (mbsinit (&state)); + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 2, 3, &state); ASSERT (ret == 1); @@ -192,6 +197,11 @@ main (int argc, char *argv[]) ASSERT (mbsinit (&state)); input[2] = '\0'; + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 3, 4, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 3, 4, &state); ASSERT (ret == 2); @@ -250,6 +260,11 @@ main (int argc, char *argv[]) ASSERT (mbsinit (&state)); input[4] = '\0'; + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 5, 3, &state); ASSERT (ret == 2); @@ -293,6 +308,11 @@ main (int argc, char *argv[]) ASSERT (mbsinit (&state)); input[2] = '\0'; + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 3, 6, &state); + ASSERT (ret == 4); + ASSERT (mbsinit (&state)); + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 3, 6, &state); ASSERT (ret == 4); |