This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: locale test failures



I've looked at the whole mbswc test suite and noticed that a variable
err_flg was used to signal if we should check for errno besides the
value of errno.  I've removed err_flag - since the handling was
broken, and check only for the errno if it's set.  This lead to
simplification of lots of tests.  Since the patch is quite large (320
K) and boring, I'm only appending the interesting parts: tst_funcs.h
and one dat file to show the changes.

I'll check in the complete patch later.

Andreas

2000-08-18  Andreas Jaeger  <aj@suse.de>

	* tests-mbwc/tst_funcs.h (TMD_ERRET): Don't declare err_flg.
	(TST_DECL_VARS): Don't declare err_flg.
	(TST_GET_ERRET): Don't set err_flg.
	(TST_GET_ERRET_SEQ): Likewise.
	(TST_IF_RETURN): Don't use err_flg, check err_exp directly.

	* tests-mbwc/dat_swscanf.c: Don't set err_flg.
	* tests-mbwc/dat_iswalnum.c: Likewise.
	* tests-mbwc/dat_iswalpha.c: Likewise.
	* tests-mbwc/dat_iswcntrl.c: Likewise.
	* tests-mbwc/dat_iswctype.c: Likewise.
	* tests-mbwc/dat_iswdigit.c: Likewise.
	* tests-mbwc/dat_iswgraph.c: Likewise.
	* tests-mbwc/dat_iswlower.c: Likewise.
	* tests-mbwc/dat_iswprint.c: Likewise.
	* tests-mbwc/dat_iswpunct.c: Likewise.
	* tests-mbwc/dat_iswspace.c: Likewise.
	* tests-mbwc/dat_iswupper.c: Likewise.
	* tests-mbwc/dat_iswxdigit.c: Likewise.
	* tests-mbwc/dat_mblen.c: Likewise.
	* tests-mbwc/dat_mbrlen.c: Likewise.
	* tests-mbwc/dat_mbrtowc.c: Likewise.
	* tests-mbwc/dat_mbsrtowcs.c: Likewise.
	* tests-mbwc/dat_mbstowcs.c: Likewise.
	* tests-mbwc/dat_mbtowc.c: Likewise.
	* tests-mbwc/dat_strcoll.c: Likewise.
	* tests-mbwc/dat_strfmon.c: Likewise.
	* tests-mbwc/dat_strxfrm.c: Likewise.
	* tests-mbwc/dat_swscanf.c: Likewise.
	* tests-mbwc/dat_towctrans.c: Likewise.
	* tests-mbwc/dat_towlower.c: Likewise.
	* tests-mbwc/dat_towupper.c: Likewise.
	* tests-mbwc/dat_wcrtomb.c: Likewise.
	* tests-mbwc/dat_wcscat.c: Likewise.
	* tests-mbwc/dat_wcschr.c: Likewise.
	* tests-mbwc/dat_wcscmp.c: Likewise.
	* tests-mbwc/dat_wcscoll.c: Likewise.
	* tests-mbwc/dat_wcscpy.c: Likewise.
	* tests-mbwc/dat_wcscspn.c: Likewise.
	* tests-mbwc/dat_wcslen.c: Likewise.
	* tests-mbwc/dat_wcsncat.c: Likewise.
	* tests-mbwc/dat_wcsncmp.c: Likewise.
	* tests-mbwc/dat_wcsncpy.c: Likewise.
	* tests-mbwc/dat_wcspbrk.c: Likewise.
	* tests-mbwc/dat_wcsrtombs.c: Likewise.
	* tests-mbwc/dat_wcsspn.c: Likewise.
	* tests-mbwc/dat_wcsstr.c: Likewise.
	* tests-mbwc/dat_wcstod.c: Likewise.
	* tests-mbwc/dat_wcstok.c: Likewise.
	* tests-mbwc/dat_wcstombs.c: Likewise.
	* tests-mbwc/dat_wcswidth.c: Likewise.
	* tests-mbwc/dat_wcsxfrm.c: Likewise.
	* tests-mbwc/dat_wctob.c: Likewise.
	* tests-mbwc/dat_wctomb.c: Likewise.
	* tests-mbwc/dat_wctrans.c: Likewise.
	* tests-mbwc/dat_wctype.c: Likewise.
	* tests-mbwc/dat_wcwidth.c: Likewise.
	* tests-mbwc/dat_isw-funcs.h: Fix comment.

============================================================
Index: localedata/tests-mbwc/dat_wcwidth.c
--- localedata/tests-mbwc/dat_wcwidth.c	2000/06/28 04:16:53	1.2
+++ localedata/tests-mbwc/dat_wcwidth.c	2000/08/18 07:42:12
@@ -11,31 +11,31 @@
       { Twcwidth, TST_LOC_de },
       {
 	{ /*inp*/ { 0x0000		     },	 /* #01 */
-	  /*exp*/ { 0,0,	1,0,	     },
+	  /*exp*/ { 0,	1,0,	     },
 	},
 	{ /*inp*/ { 0x0020		     },	 /* #02 */
-	  /*exp*/ { 0,0,	1,1,	     },
+	  /*exp*/ { 0,	1,1,	     },
 	},
 	{ /*inp*/ { 0x007F		     },	 /* #03 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x0080		     },	 /* #04 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x00A1		     },	 /* #05 */
-	  /*exp*/ { 0,0,	1,1,	     },
+	  /*exp*/ { 0,	1,1,	     },
 	},
 	{ /*inp*/ { 0x00C1		     },	 /* #06 */
-	  /*exp*/ { 0,0,	1,1,	     },
+	  /*exp*/ { 0,	1,1,	     },
 	},
 #ifdef SHOJI_IS_RIGHT
 	/* <WAIVER> */	/* CHECK : wint_t */
 	{ /*inp*/ { 0x3041		     },	 /* #07 */
-	  /*exp*/ { 0,0,	1,0,	     },
+	  /*exp*/ { 0,	1,0,	     },
 	},
 #else
 	{ /*inp*/ { 0x3041		     },	 /* #07 */
-	  /*exp*/ { 0,0,	1,EOF,	     },
+	  /*exp*/ { 0,	1,EOF,	     },
 	},
 #endif
 	{ is_last: 1 }
@@ -45,25 +45,25 @@
       { Twcwidth, TST_LOC_enUS },
       {
 	{ /*inp*/ { 0x0000		     },	 /* #01 */
-	  /*exp*/ { 0,0,	1,0,	     },
+	  /*exp*/ { 0,	1,0,	     },
 	},
 	{ /*inp*/ { 0x0020		     },	 /* #02 */
-	  /*exp*/ { 0,0,	1,1,	     },
+	  /*exp*/ { 0,	1,1,	     },
 	},
 	{ /*inp*/ { 0x007F		     },	 /* #03 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x0080		     },	 /* #04 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x00A1		     },	 /* #05 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x00C1		     },	 /* #06 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x3041		     },	 /* #07 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ is_last: 1 }
       }
@@ -72,34 +72,34 @@
       { Twcwidth, TST_LOC_eucJP },
       {
 	{ /*inp*/ { 0x0000		     },	 /* #01 */
-	  /*exp*/ { 0,0,	1,0,	     },
+	  /*exp*/ { 0,	1,0,	     },
 	},
 	{ /*inp*/ { 0x0020		     },	 /* #02 */
-	  /*exp*/ { 0,0,	1,1,	     },
+	  /*exp*/ { 0,	1,1,	     },
 	},
 	{ /*inp*/ { 0x007F		     },	 /* #03 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 	{ /*inp*/ { 0x0080		     },	 /* #04 */
-	  /*exp*/ { 0,0,	1,-1,	     },
+	  /*exp*/ { 0,	1,-1,	     },
 	},
 #ifdef SHOJI_IS_RIGHT
 	/* <NO_WAIVER> */
 	{ /*inp*/ { 0x00A1		     },	 /* #05 */
-	  /*exp*/ { 0,0,	1,0,	     },
+	  /*exp*/ { 0,	1,0,	     },
 	},
 #else
 	/* XXX U00A1 is a valid character in EUC-JP.  */
 	{ /*inp*/ { 0x00A1		     },	 /* #05 */
-	  /*exp*/ { 0,0,	1,2,	     },
+	  /*exp*/ { 0,	1,2,	     },
 	},
 #endif
 	/* jisx0212 */
 	{ /*inp*/ { 0x00C1		     },	 /* #06 */
-	  /*exp*/ { 0,0,	1,2,	     },
+	  /*exp*/ { 0,	1,2,	     },
 	},
 	{ /*inp*/ { 0x3041		     },	 /* #07 */
-	  /*exp*/ { 0,0,	1,2,	     },
+	  /*exp*/ { 0,	1,2,	     },
 	},
 	{ is_last: 1 }
       }
============================================================
Index: localedata/tests-mbwc/tst_funcs.h
--- localedata/tests-mbwc/tst_funcs.h	2000/08/17 15:41:22	1.3
+++ localedata/tests-mbwc/tst_funcs.h	2000/08/18 07:42:13
@@ -53,8 +53,7 @@
 
 #define TST_ABS(x)  (((x) > 0) ? (x) : -(x))
 
-#define TMD_ERRET(_type_)   int	  err_flg; \
-			    int	  err_val; \
+#define TMD_ERRET(_type_)   int	  err_val; \
 			    int	  ret_flg; \
 			    _type_ ret_val
 
@@ -87,7 +86,7 @@
 	int   warn_count __attribute__ ((unused));	\
 	int   func_id, seq_num = 0;			\
 	const char *locale;				\
-	int   err_flg, err_exp, ret_flg;		\
+	int   err_exp, ret_flg;				\
 	int errno_save = 0;				\
 	_type_ ret_exp;					\
 	_type_ ret
@@ -114,13 +113,11 @@
 	for (seq_num=0; seq_num < _count_; seq_num++)
 
 #define TST_GET_ERRET(_ofunc_)			\
-	err_flg = TST_EXPECT (_ofunc_).err_flg; \
 	err_exp = TST_EXPECT (_ofunc_).err_val; \
 	ret_flg = TST_EXPECT (_ofunc_).ret_flg; \
 	ret_exp = TST_EXPECT (_ofunc_).ret_val
 
 #define TST_GET_ERRET_SEQ(_ofunc_)		    \
-	err_flg = TST_EXPECT_SEQ (_ofunc_).err_flg; \
 	err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; \
 	ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; \
 	ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val
@@ -131,12 +128,11 @@
 #define TST_SAVE_ERRNO \
 	errno_save = errno
 
+/* Test value of ret and of errno if it should have a value.  */
 #define TST_IF_RETURN(_s_func_) \
-  if (err_flg == 1)							      \
+  if (err_exp != 0)							      \
     {									      \
-      /* If no error occured, errno is undefined. Here we check only if       \
-         errno has the right value if it should have one.  */		      \
-      if ((err_exp == 0) || (errno_save == err_exp))			      \
+      if (errno_save == err_exp)					      \
 	{								      \
 	  result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 1,	      \
 		  MS_PASSED);						      \

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]