summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2002-12-19 02:01:39 +0000
committertjr <tjr@FreeBSD.org>2002-12-19 02:01:39 +0000
commit2aa20c1a1efd4c21dc2f5fd41dadfc7d73779199 (patch)
treebfd59e9d4d5640b4673ad9729a92e03e54c629fe /tools
parent3f31cbe67cd067fcd32b9c61eeba4277c4dc7c92 (diff)
downloadFreeBSD-src-2aa20c1a1efd4c21dc2f5fd41dadfc7d73779199.zip
FreeBSD-src-2aa20c1a1efd4c21dc2f5fd41dadfc7d73779199.tar.gz
Test that if the buffer argument (`s') to wcrtomb() is NULL then
the value of the supplied wide character is ignored and L'\0' is used instead. Remove incorrect comments about "internal buffer" since wcrtomb() does not have one (wctomb() does).
Diffstat (limited to 'tools')
-rw-r--r--tools/regression/lib/libc/locale/test-wcrtomb.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/tools/regression/lib/libc/locale/test-wcrtomb.c b/tools/regression/lib/libc/locale/test-wcrtomb.c
index 3c16dff..c00792b 100644
--- a/tools/regression/lib/libc/locale/test-wcrtomb.c
+++ b/tools/regression/lib/libc/locale/test-wcrtomb.c
@@ -57,12 +57,12 @@ main(int argc, char *argv[])
assert(MB_CUR_MAX == 1);
- /* Null wide character, internal state, internal buffer. */
+ /*
+ * If the buffer argument is NULL, wc is implicitly L'\0',
+ * wcrtomb() resets its internal state.
+ */
assert(wcrtomb(NULL, L'\0', NULL) == 1);
-
- /* Null wide character, internal buffer. */
- memset(&s, 0, sizeof(s));
- assert(wcrtomb(NULL, L'\0', &s) == 1);
+ assert(wcrtomb(NULL, UCHAR_MAX + 1, NULL) == 1);
/* Null wide character. */
memset(&s, 0, sizeof(s));
@@ -71,13 +71,10 @@ main(int argc, char *argv[])
assert(len == 1);
assert((unsigned char)buf[0] == 0 && (unsigned char)buf[1] == 0xcc);
- /* Latin letter A, internal state, internal buffer. */
+ /* Latin letter A, internal state. */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
assert(wcrtomb(NULL, L'A', NULL) == 1);
- /* Latin letter A, internal buffer. */
- memset(&s, 0, sizeof(s));
- assert(wcrtomb(NULL, L'A', &s) == 1);
-
/* Latin letter A. */
memset(&s, 0, sizeof(s));
memset(buf, 0xcc, sizeof(buf));
@@ -86,7 +83,7 @@ main(int argc, char *argv[])
assert((unsigned char)buf[0] == 'A' && (unsigned char)buf[1] == 0xcc);
/* Invalid code. */
- assert(wcrtomb(NULL, UCHAR_MAX + 1, NULL) == (size_t)-1);
+ assert(wcrtomb(buf, UCHAR_MAX + 1, NULL) == (size_t)-1);
assert(errno == EILSEQ);
/*
@@ -96,9 +93,11 @@ main(int argc, char *argv[])
assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
assert(MB_CUR_MAX == 3);
- /* Null wide character, internal buffer. */
- memset(&s, 0, sizeof(s));
- assert(wcrtomb(NULL, L'\0', &s) == 1);
+ /*
+ * If the buffer argument is NULL, wc is implicitly L'\0',
+ * wcrtomb() resets its internal state.
+ */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
/* Null wide character. */
memset(&s, 0, sizeof(s));
@@ -107,13 +106,10 @@ main(int argc, char *argv[])
assert(len == 1);
assert((unsigned char)buf[0] == 0 && (unsigned char)buf[1] == 0xcc);
- /* Latin letter A, internal state, internal buffer. */
+ /* Latin letter A, internal state. */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
assert(wcrtomb(NULL, L'A', NULL) == 1);
- /* Latin letter A, internal buffer. */
- memset(&s, 0, sizeof(s));
- assert(wcrtomb(NULL, L'A', &s) == 1);
-
/* Latin letter A. */
memset(&s, 0, sizeof(s));
memset(buf, 0xcc, sizeof(buf));
OpenPOWER on IntegriCloud