about 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.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/iconvdata/ibm939.c b/iconvdata/ibm939.c
index c0a75f7797..5122975452 100644
--- a/iconvdata/ibm939.c
+++ b/iconvdata/ibm939.c
@@ -190,7 +190,6 @@ enum
     uint32_t ch = get32 (inptr);					      \
     const struct gap *rp1 = __ucs4_to_ibm939sb_idx;			      \
     const struct gap *rp2 = __ucs4_to_ibm939db_idx;			      \
-    const char *cp;							      \
 									      \
     if (__glibc_unlikely (ch >= 0xffff))				      \
       {									      \
@@ -202,14 +201,16 @@ enum
       ++rp1;								      \
 									      \
     /* Use the UCS4 table for single byte.  */				      \
+    unsigned char sbconv;						      \
     if (__builtin_expect (ch < rp1->start, 0)				      \
-	|| (cp = __ucs4_to_ibm939sb[ch + rp1->idx],			      \
-	    __builtin_expect (cp[0], L'\1') == L'\0' && ch != '\0'))	      \
+	|| (sbconv = __ucs4_to_ibm939sb[ch + rp1->idx],			      \
+	    __builtin_expect (sbconv, L'\1') == L'\0' && ch != '\0'))	      \
       {									      \
 	/* Use the UCS4 table for double byte.  */			      \
 	while (ch > rp2->end)						      \
 	  ++rp2;							      \
 									      \
+	const char *cp;							      \
 	if (__builtin_expect (ch < rp2->start, 0)			      \
 	    || (cp = __ucs4_to_ibm939db[ch + rp2->idx],			      \
 		__builtin_expect (cp[0], L'\1')==L'\0' && ch != '\0'))	      \
@@ -263,7 +264,7 @@ enum
 	else if (ch == 0x5c)						      \
 	  *outptr++ = 0xb2;						      \
 	else								      \
-	  *outptr++ = cp[0];						      \
+	  *outptr++ = sbconv;						      \
       }									      \
 									      \
     /* Now that we wrote the output increment the input pointer.  */	      \