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;
}
/*