summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xiconvdata/tst-tables.sh1
-rw-r--r--locale/programs/ld-ctype.c21
-rw-r--r--localedata/ChangeLog6
-rw-r--r--localedata/tests-mbwc/dat_wcscmp.c36
-rw-r--r--localedata/tests-mbwc/tst_wcscmp.c1
-rw-r--r--wcsmbs/Versions2
6 files changed, 36 insertions, 31 deletions
diff --git a/iconvdata/tst-tables.sh b/iconvdata/tst-tables.sh
index bc57e1b83b..d5a74621ce 100755
--- a/iconvdata/tst-tables.sh
+++ b/iconvdata/tst-tables.sh
@@ -202,6 +202,7 @@ cat <<EOF |
   #ISO-2022-KR
   #ISO-2022-CN
   #ISO-2022-CN-EXT
+  #UTF-7
   #
 EOF
 while read charset charmap; do
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index 644bfbf7df..1d10cec618 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -3364,8 +3364,11 @@ struct wctype_table
 static inline void
 wctype_table_init (struct wctype_table *t)
 {
+  t->level1 = NULL;
   t->level1_alloc = t->level1_size = 0;
+  t->level2 = NULL;
   t->level2_alloc = t->level2_size = 0;
+  t->level3 = NULL;
   t->level3_alloc = t->level3_size = 0;
 }
 
@@ -3413,10 +3416,8 @@ wctype_table_add (struct wctype_table *t, uint32_t wc)
 	  size_t alloc = 2 * t->level1_alloc;
 	  if (alloc <= index1)
 	    alloc = index1 + 1;
-	  t->level1 = (t->level1_alloc > 0
-		       ? (uint32_t *) xrealloc ((char *) t->level1,
-						alloc * sizeof (uint32_t))
-		       : (uint32_t *) xmalloc (alloc * sizeof (uint32_t)));
+	  t->level1 = (uint32_t *) xrealloc ((char *) t->level1,
+					     alloc * sizeof (uint32_t));
 	  t->level1_alloc = alloc;
 	}
       while (index1 >= t->level1_size)
@@ -3428,10 +3429,8 @@ wctype_table_add (struct wctype_table *t, uint32_t wc)
       if (t->level2_size == t->level2_alloc)
 	{
 	  size_t alloc = 2 * t->level2_alloc + 1;
-	  t->level2 = (t->level2_alloc > 0
-		       ? (uint32_t *) xrealloc ((char *) t->level2,
-						(alloc << t->q) * sizeof (uint32_t))
-		       : (uint32_t *) xmalloc ((alloc << t->q) * sizeof (uint32_t)));
+	  t->level2 = (uint32_t *) xrealloc ((char *) t->level2,
+					     (alloc << t->q) * sizeof (uint32_t));
 	  t->level2_alloc = alloc;
 	}
       i1 = t->level2_size << t->q;
@@ -3448,10 +3447,8 @@ wctype_table_add (struct wctype_table *t, uint32_t wc)
       if (t->level3_size == t->level3_alloc)
 	{
 	  size_t alloc = 2 * t->level3_alloc + 1;
-	  t->level3 = (t->level3_alloc > 0
-		       ? (uint32_t *) xrealloc ((char *) t->level3,
-						(alloc << t->p) * sizeof (uint32_t))
-		       : (uint32_t *) xmalloc ((alloc << t->p) * sizeof (uint32_t)));
+	  t->level3 = (uint32_t *) xrealloc ((char *) t->level3,
+					     (alloc << t->p) * sizeof (uint32_t));
 	  t->level3_alloc = alloc;
 	}
       i1 = t->level3_size << t->p;
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 705414c903..b8899b3687 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,9 @@
+2000-09-30  Bruno Haible  <haible@clisp.cons.org>
+
+	* tests-mbwc/tst_wcscmp.c (tst_wcscmp): Take the sign of ret.
+	* tests-mbwc/dat_wcscmp.c (tst_wcscmp_loc): Don't expect precise
+	return values.  Only the sign matters.
+
 2000-09-28  Ulrich Drepper  <drepper@redhat.com>
 
 	* locales/ar_SA: Last non <Uxxxx> entries removed.
diff --git a/localedata/tests-mbwc/dat_wcscmp.c b/localedata/tests-mbwc/dat_wcscmp.c
index fba0283ddf..d479ab49f3 100644
--- a/localedata/tests-mbwc/dat_wcscmp.c
+++ b/localedata/tests-mbwc/dat_wcscmp.c
@@ -26,27 +26,27 @@ TST_WCSCMP tst_wcscmp_loc [] = {
       },
       { /*input.*/ { { 0x00D1,0x00D1,0x00D3,0x0000 },
 		     { 0x0000,0x00D2,0x00D3,0x0000 }, },  /* #3 */
-	/*expect*/ { 0,1,0x00D1,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
 		     { 0x00D1,0x00D1,0x00D3,0x0000 }, },  /* #4 */
-	/*expect*/ { 0,1,-0x00D1,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x00D1,0x00D5,0x00D3,0x0000 },
 		     { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #5 */
-	/*expect*/ { 0,1,3,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
 		     { 0x00D1,0x00D2,0x00D9,0x0000 }, },  /* #6 */
-	/*expect*/ { 0,1,-6,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x00D1,0x00D2,0x0000	       },
 		     { 0x00D1,0x00D2,0x00D9,0x0000 }, },  /* #7 */
-	/*expect*/ { 0,1,-0x00D9,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x00D1,0x00D2,0x00D9,0x0000 },
 		     { 0x00D1,0x00D2,0x0000	       }, },  /* #8 */
-	/*expect*/ { 0,1,0x00D9,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { is_last: 1 }
     }
@@ -64,27 +64,27 @@ TST_WCSCMP tst_wcscmp_loc [] = {
       },
       { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 },
 		     { 0x0000,0x0042,0x0043,0x0000 }, },  /* #3 */
-	/*expect*/ { 0,1,0x0041,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
 		     { 0x0041,0x0041,0x0043,0x0000 }, },  /* #4 */
-	/*expect*/ { 0,1,-0x0041,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x0041,0x0045,0x0043,0x0000 },
 		     { 0x0041,0x0042,0x0043,0x0000 }, },  /* #5 */
-	/*expect*/ { 0,1,3,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
 		     { 0x0041,0x0042,0x0049,0x0000 }, },  /* #6 */
-	/*expect*/ { 0,1,-6,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x0041,0x0042,0x0000	       },
 		     { 0x0041,0x0042,0x0049,0x0000 }, },  /* #7 */
-	/*expect*/ { 0,1,-0x0049,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 },
 		     { 0x0041,0x0042,0x0000	       }, },  /* #8 */
-	/*expect*/ { 0,1,0x0049,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { is_last: 1 }
     }
@@ -102,27 +102,27 @@ TST_WCSCMP tst_wcscmp_loc [] = {
       },
       { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 },
 		     { 0x0000,0x3042,0x3043,0x0000 }, },  /* #3 */
-	/*expect*/ { 0,1,0x3041,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
 		     { 0x3041,0x3041,0x3043,0x0000 }, },  /* #4 */
-	/*expect*/ { 0,1,-0x3041,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x3041,0x3045,0x3043,0x0000 },
 		     { 0x3041,0x3042,0x3043,0x0000 }, },  /* #5 */
-	/*expect*/ { 0,1,3,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
 		     { 0x3041,0x3042,0x3049,0x0000 }, },  /* #6 */
-	/*expect*/ { 0,1,-6,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x3041,0x3042,0x0000	       },
 		     { 0x3041,0x3042,0x3049,0x0000 }, },  /* #7 */
-	/*expect*/ { 0,1,-0x3049,			  },
+	/*expect*/ { 0,1,-1,			  },
       },
       { /*input.*/ { { 0x3041,0x3042,0x3049,0x0000 },
 		     { 0x3041,0x3042,0x0000	       }, },  /* #8 */
-	/*expect*/ { 0,1,0x3049,			  },
+	/*expect*/ { 0,1,1,			  },
       },
       { is_last: 1 }
     }
diff --git a/localedata/tests-mbwc/tst_wcscmp.c b/localedata/tests-mbwc/tst_wcscmp.c
index ecd825c228..594682ce9d 100644
--- a/localedata/tests-mbwc/tst_wcscmp.c
+++ b/localedata/tests-mbwc/tst_wcscmp.c
@@ -23,6 +23,7 @@ tst_wcscmp (FILE * fp, int debug_flg)
       ws1 = TST_INPUT (wcscmp).ws1;
       ws2 = TST_INPUT (wcscmp).ws2;
       ret = wcscmp (ws1, ws2);
+      ret = (ret > 0 ? 1 : ret < 0 ? -1 : 0);
 
       if (debug_flg)
 	{
diff --git a/wcsmbs/Versions b/wcsmbs/Versions
index d0ba267756..6f2e72eb2a 100644
--- a/wcsmbs/Versions
+++ b/wcsmbs/Versions
@@ -1,7 +1,7 @@
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
-    __wcsto*_internal; __mbrlen;
+    __wcsto*_internal; __mbrlen; __mbrtowc;
 
     # b*
     btowc;