]> granicus.if.org Git - postgresql/commitdiff
Fix ASCII case in pg_wchar2mule_with_len.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Jul 2012 19:58:36 +0000 (15:58 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Jul 2012 19:59:39 +0000 (15:59 -0400)
Also some cosmetic improvements for wchar-to-mblen patch.

src/backend/utils/mb/wchar.c

index 54581cd12a5e98a97b0593b8d74e1db8aa26a1f6..e46bcf0006e2a382ef838e95f314d4218c223bb4 100644 (file)
@@ -99,8 +99,7 @@ pg_euc2wchar_with_len(const unsigned char *from, pg_wchar *to, int len)
                        *to |= *from++;
                        len -= 2;
                }
-               else
-                       /* must be ASCII */
+               else                                                    /* must be ASCII */
                {
                        *to = *from++;
                        len--;
@@ -340,7 +339,7 @@ pg_euctw_dsplen(const unsigned char *s)
 }
 
 /*
- * Convert pg_wchar to EUC_* encoding. 
+ * Convert pg_wchar to EUC_* encoding.
  * caller must allocate enough space for "to", including a trailing zero!
  * len: length of from.
  * "from" not necessarily null terminated.
@@ -353,8 +352,8 @@ pg_wchar2euc_with_len(const pg_wchar *from, unsigned char *to, int len)
        while (len > 0 && *from)
        {
                unsigned char c;
-               
-               if ((c = *from >> 24))
+
+               if ((c = (*from >> 24)))
                {
                        *to++ = c;
                        *to++ = (*from >> 16) & 0xff;
@@ -362,14 +361,14 @@ pg_wchar2euc_with_len(const pg_wchar *from, unsigned char *to, int len)
                        *to++ = *from & 0xff;
                        cnt += 4;
                }
-               else if ((c = *from >> 16))
+               else if ((c = (*from >> 16)))
                {
                        *to++ = c;
                        *to++ = (*from >> 8) & 0xff;
                        *to++ = *from & 0xff;
                        cnt += 3;
                }
-               else if ((c = *from >> 8))
+               else if ((c = (*from >> 8)))
                {
                        *to++ = c;
                        *to++ = *from & 0xff;
@@ -379,7 +378,7 @@ pg_wchar2euc_with_len(const pg_wchar *from, unsigned char *to, int len)
                {
                        *to++ = *from;
                        cnt++;
-               }               
+               }
                from++;
                len--;
        }
@@ -516,7 +515,7 @@ pg_wchar2utf_with_len(const pg_wchar *from, unsigned char *to, int len)
        while (len > 0 && *from)
        {
                int char_len;
-               
+
                unicode_to_utf8(*from, to);
                char_len = pg_utf_mblen(to);
                cnt += char_len;
@@ -803,10 +802,11 @@ static int
 pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to, int len)
 {
        int                     cnt = 0;
-       unsigned char lb;
 
        while (len > 0 && *from)
        {
+               unsigned char lb;
+
                lb = (*from >> 16) & 0xff;
                if (IS_LC1(lb))
                {
@@ -853,7 +853,7 @@ pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to, int len)
                }
                else
                {
-                       *to++ = lb;
+                       *to++ = *from & 0xff;
                        cnt += 1;
                }
                from++;