]> Savannah Git Hosting - gnulib.git/commitdiff
stdlib tests: Check behaviour of C locale.
authorBruno Haible <bruno@clisp.org>
Thu, 30 Mar 2023 10:25:05 +0000 (12:25 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 30 Mar 2023 12:28:55 +0000 (14:28 +0200)
* tests/test-stdlib.c (main): Check MB_CUR_MAX.

ChangeLog
tests/test-stdlib.c

index fd39860f9b52b638b7f2d0fe7c1d947d8fd194cb..ba75036c75bc00dc8c49286377a919370957d80e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2023-03-30  Bruno Haible  <bruno@clisp.org>
+
+       stdlib tests: Check behaviour of C locale.
+       * tests/test-stdlib.c (main): Check MB_CUR_MAX.
+
 2023-03-30  Bruno Haible  <bruno@clisp.org>
 
        string-desc tests: Fix "make distcheck" failure.
index ceccd4d233143280fc19f1bd43355e2137411489..0d3984701afbd36b66c9d673e6e21823143de813 100644 (file)
@@ -45,8 +45,19 @@ static_assert (sizeof NULL == sizeof (void *));
 int
 main (void)
 {
-  if (test_sys_wait_macros ())
+  /* POSIX:2018 says:
+     "In the POSIX locale the value of MB_CUR_MAX shall be 1."  */
+  /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+     "C" locale.  Furthermore, when you attempt to set the "C" or "POSIX"
+     locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+     that is, effectively the "C.UTF-8" locale.  */
+#ifndef __ANDROID__
+  if (MB_CUR_MAX != 1)
     return 1;
+#endif
+
+  if (test_sys_wait_macros ())
+    return 2;
 
   return exitcode;
 }