Hi, Naoto

This looks quite good.

I will test a bit with some of the trickier locales. BTW, the script will now also be reflected in Locale.getScript() and Locale.getDisplayScript().

Just a few comments:

---
src/java.base/macosx/native/libjava/java_props_macosx.h

Update copyright year

---
src/java.base/unix/native/libjava/locale_str.h

Update copyright year

214     "Hans", "Hans",
215     "Hant", "Hant",
216     "Latn", "Latn",
217     "Cyrl", "Cyrl",
218     "Arab", "Arab",

MacOS 10.12 ("Sierra") has a number of new languages not present in 10.11, including a few new scripts. I believe these should also be added here:

Deva
Ethi
Sund
Syrc
Tfng

---
src/java.base/macosx/native/libjava/java_props_macosx.c

Similar to the previous code, the call to:

79 CFStringGetCString(CFLocaleGetIdentifier(CFLocaleCopyCurrent()), 80 localeString, LOCALEIDLENGTH, CFStringGetSystemEncoding());

can be moved inside the if():

84 if (hyphenPos == NULL || // languageString contains ISO639 only, e.g., "en"
85                 languageString + langStrLen - hyphenPos == 5) {


FWIW, I believe this code path will only be taken for MacOS 10.11 and earlier. Per TN2418[1] (and my testing thus far), 10.12 will always provide a region to 'languageString'. 10.11 and prior often return just a two-character language code.


134  * lang{_region}{@script}. e.g.,
135  * for "zh-Hans-US" into "zh_US@Hans"

This comment could fit on one line.


152             char tmp[4];

Maybe a more descriptive name ("tmpScript" ?)


173         assert((length == 3 || length == 8) &&
...

Idea: adding another set of ()s grouping:

  length 3 or 8 case
  length 4 or 9 case
  length == 5 case

would cause each case to highlight nicely in an IDE.  Just a thought.


A JDK 10 Reviewer will also need to take a look.

Thanks,
-Brent

1. https://developer.apple.com/library/content/technotes/tn2418/_index.html


On 6/28/17 10:51 AM, Naoto Sato wrote:
Hello,

Please review the fix to the following issue:

https://bugs.openjdk.java.net/browse/JDK-8160199

The fix is located at:

http://cr.openjdk.java.net/~naoto/8160199/webrev.03/

The gist of the issue was that the script code has not been properly treated in macOS specific code. Since it shares the same code with other Unix, the locale format should follow POSIX, such as az-Cyrl-AZ needing to be az_AZ@Cyrl.

Naoto

Reply via email to