The patch looks pretty good to me. I just have a stylistic suggestion which
I've attached as a text file. There are also some outdated comments that
are not the responsibility of this patch, but I kind of want to fix them
now:

 *  - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
 * have a column width of 0.

We got rid of this range in d8594d123c1, which is correct.

 *  - Other format characters (general category code Cf in the Unicode
 * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.

We don't treat Cf the same as Me or Mn, and I believe that's deliberate. We
also no longer have the exception for zero-width space.

It seems the consensus so far is that performance is not an issue, and I'm
inclined to agree.

I'm a bit concerned about the build dependencies not working right, but
it's not clear it's even due to the patch. I'll spend some time
investigating next week.

-- 
John Naylor
EDB: http://www.enterprisedb.com
diff --git a/src/common/wchar.c b/src/common/wchar.c
index 43f1078ae6..467cb8921a 100644
--- a/src/common/wchar.c
+++ b/src/common/wchar.c
@@ -623,12 +623,6 @@ mbbisearch(pg_wchar ucs, const struct mbinterval *table, 
int max)
  *             category code Mn or Me in the Unicode database) have a
  *             column width of 0.
  *
- *       - Other format characters (general category code Cf in the Unicode
- *             database) and ZERO WIDTH SPACE (U+200B) have a column width of 
0.
- *
- *       - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
- *             have a column width of 0.
- *
  *       - Spacing characters in the East Asian Wide (W) or East Asian
  *             FullWidth (F) category as defined in Unicode Technical
  *             Report #11 have a column width of 2.
@@ -659,13 +653,12 @@ ucs_wcwidth(pg_wchar ucs)
                                   sizeof(combining) / sizeof(struct 
mbinterval) - 1))
                return 0;
 
-       /*
-        * if we arrive here, ucs is not a combining or C0/C1 control character
-        */
+       /* binary search in table of wide characters */
+       if (mbbisearch(ucs, east_asian_fw,
+                                  sizeof(east_asian_fw) / sizeof(struct 
mbinterval) - 1))
+               return 2;
 
-       return 1 +
-               mbbisearch(ucs, east_asian_fw,
-                                  sizeof(east_asian_fw) / sizeof(struct 
mbinterval) - 1);
+       return 1;
 }
 
 /*

Reply via email to