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++;