test-update-copyright: skip if perl is insufficient
[gnulib.git] / tests / test-mbsrtowcs.c
index 27fd58c..81e67c1 100644 (file)
@@ -88,6 +88,7 @@ main (int argc, char *argv[])
          #define BUFSIZE 10
          wchar_t buf[BUFSIZE];
          const char *src;
+         mbstate_t temp_state;
 
          {
            size_t i;
@@ -118,7 +119,8 @@ main (int argc, char *argv[])
                input[1] = '\0';
 
                src = input + 2;
-               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 1, &state);
+               temp_state = state;
+               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 1, &temp_state);
                ASSERT (ret == 3);
                ASSERT (src == input + 2);
                ASSERT (mbsinit (&state));
@@ -139,7 +141,7 @@ main (int argc, char *argv[])
                  ASSERT (buf[1] == (wchar_t) 0xBADFACE);
                ASSERT (mbsinit (&state));
              }
-             return 0;
+             break;
 
            case '2':
              /* Locale encoding is UTF-8.  */
@@ -162,7 +164,8 @@ main (int argc, char *argv[])
                input[1] = '\0';
 
                src = input + 2;
-               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &state);
+               temp_state = state;
+               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state);
                ASSERT (ret == 4);
                ASSERT (src == input + 2);
                ASSERT (!mbsinit (&state));
@@ -184,7 +187,7 @@ main (int argc, char *argv[])
                  ASSERT (buf[2] == (wchar_t) 0xBADFACE);
                ASSERT (mbsinit (&state));
              }
-             return 0;
+             break;
 
            case '3':
              /* Locale encoding is EUC-JP.  */
@@ -215,7 +218,8 @@ main (int argc, char *argv[])
                input[3] = '\0';
 
                src = input + 4;
-               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &state);
+               temp_state = state;
+               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state);
                ASSERT (ret == 3);
                ASSERT (src == input + 4);
                ASSERT (!mbsinit (&state));
@@ -236,7 +240,7 @@ main (int argc, char *argv[])
                  ASSERT (buf[2] == (wchar_t) 0xBADFACE);
                ASSERT (mbsinit (&state));
              }
-             return 0;
+             break;
 
            case '4':
              /* Locale encoding is GB18030.  */
@@ -259,7 +263,8 @@ main (int argc, char *argv[])
                input[1] = '\0';
 
                src = input + 2;
-               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &state);
+               temp_state = state;
+               ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state);
                ASSERT (ret == 4);
                ASSERT (src == input + 2);
                ASSERT (!mbsinit (&state));
@@ -281,7 +286,7 @@ main (int argc, char *argv[])
                  ASSERT (buf[2] == (wchar_t) 0xBADFACE);
                ASSERT (mbsinit (&state));
              }
-             return 0;
+             break;
 
            default:
              return 1;