summary refs log tree commit diff
path: root/iconvdata/utf-16.c
diff options
context:
space:
mode:
Diffstat (limited to 'iconvdata/utf-16.c')
-rw-r--r--iconvdata/utf-16.c34
1 files changed, 9 insertions, 25 deletions
diff --git a/iconvdata/utf-16.c b/iconvdata/utf-16.c
index d17f6c3563..642340611d 100644
--- a/iconvdata/utf-16.c
+++ b/iconvdata/utf-16.c
@@ -1,5 +1,5 @@
 /* Conversion module for UTF-16.
-   Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000-2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
 
@@ -205,11 +205,9 @@ gconv_end (struct __gconv_step *data)
 	   We must catch this.  If we let surrogates pass through,	      \
 	   attackers could make a security hole exploit by		      \
 	   synthesizing any desired plane 1-16 character.  */		      \
+	result = __GCONV_ILLEGAL_INPUT;					      \
 	if (! ignore_errors_p ())					      \
-	  {								      \
-	    result = __GCONV_ILLEGAL_INPUT;				      \
-	    break;							      \
-	  }								      \
+	  break;							      \
 	inptr += 4;							      \
 	++*irreversible;						      \
 	continue;							      \
@@ -221,7 +219,7 @@ gconv_end (struct __gconv_step *data)
 	  {								      \
 	    if (__builtin_expect (c >= 0x110000, 0))			      \
 	      {								      \
-		STANDARD_ERR_HANDLER (4);				      \
+		STANDARD_TO_LOOP_ERR_HANDLER (4);			      \
 	      }								      \
 									      \
 	    /* Generate a surrogate character.  */			      \
@@ -245,7 +243,7 @@ gconv_end (struct __gconv_step *data)
 	  {								      \
 	    if (__builtin_expect (c >= 0x110000, 0))			      \
 	      {								      \
-		STANDARD_ERR_HANDLER (4);				      \
+		STANDARD_TO_LOOP_ERR_HANDLER (4);			      \
 	      }								      \
 									      \
 	    /* Generate a surrogate character.  */			      \
@@ -311,15 +309,8 @@ gconv_end (struct __gconv_step *data)
 		|| __builtin_expect (u2 == 0xdfff, 0))			      \
 	      {								      \
 		/* This is no valid second word for a surrogate.  */	      \
-		if (! ignore_errors_p ())				      \
-		  {							      \
-		    inptr -= 2;						      \
-		    result = __GCONV_ILLEGAL_INPUT;			      \
-		    break;						      \
-		  }							      \
-									      \
-		++*irreversible;					      \
-		continue;						      \
+		inptr -= 2;						      \
+		STANDARD_FROM_LOOP_ERR_HANDLER (2);			      \
 	      }								      \
 									      \
 	    put32 (outptr, ((u1 - 0xd7c0) << 10) + (u2 - 0xdc00));	      \
@@ -354,15 +345,8 @@ gconv_end (struct __gconv_step *data)
 		|| __builtin_expect (u2 >= 0xdfff, 0))			      \
 	      {								      \
 		/* This is no valid second word for a surrogate.  */	      \
-		if (! ignore_errors_p ())				      \
-		  {							      \
-		    inptr -= 2;						      \
-		    result = __GCONV_ILLEGAL_INPUT;			      \
-		    break;						      \
-		  }							      \
-									      \
-		++*irreversible;					      \
-		continue;						      \
+		inptr -= 2;						      \
+		STANDARD_FROM_LOOP_ERR_HANDLER (2);			      \
 	      }								      \
 									      \
 	    put32 (outptr, ((u1 - 0xd7c0) << 10) + (u2 - 0xdc00));	      \