summary refs log tree commit diff
path: root/iconvdata/ibm939.c
diff options
context:
space:
mode:
Diffstat (limited to 'iconvdata/ibm939.c')
-rw-r--r--iconvdata/ibm939.c23
1 files changed, 4 insertions, 19 deletions
diff --git a/iconvdata/ibm939.c b/iconvdata/ibm939.c
index 8fcac1232a..aae08ba3d1 100644
--- a/iconvdata/ibm939.c
+++ b/iconvdata/ibm939.c
@@ -131,15 +131,10 @@ enum
       {									      \
 	/* Use the IBM939 table for single byte.  */			      \
 	res = __ibm939sb_to_ucs4[ch];					      \
-	if (__builtin_expect (res, L'\1') == L'\0' && ch != '\0')	      \
+	if (__builtin_expect (res == L'\0', 0) && ch != '\0')		      \
 	  {								      \
 	    /* This is an illegal character.  */			      \
-	    if (! ignore_errors_p ())					      \
-	      {								      \
-		result = __GCONV_ILLEGAL_INPUT;				      \
-		break;							      \
-	      }								      \
-	    ++*irreversible;						      \
+	    STANDARD_FROM_LOOP_ERR_HANDLER (1);				      \
 	  }								      \
 	else								      \
 	  {								      \
@@ -173,12 +168,7 @@ enum
 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
 	  {								      \
 	    /* This is an illegal character.  */			      \
-	    if (! ignore_errors_p ())					      \
-	      {								      \
-		result = __GCONV_ILLEGAL_INPUT;				      \
-		break;							      \
-	      }								      \
-	    ++*irreversible;						      \
+	    STANDARD_FROM_LOOP_ERR_HANDLER (2);				      \
 	  }								      \
 	else								      \
 	  {								      \
@@ -233,12 +223,7 @@ enum
 		__builtin_expect (cp[0], L'\1')==L'\0' && ch != '\0'))	      \
 	  {								      \
 	    /* This is an illegal character.  */			      \
-	    if (! ignore_errors_p ())					      \
-	      {								      \
-		result = __GCONV_ILLEGAL_INPUT;				      \
-		break;							      \
-	      }								      \
-	    ++*irreversible;						      \
+	    STANDARD_TO_LOOP_ERR_HANDLER (4);				      \
 	  }								      \
 	else								      \
 	  {								      \