Exclude U+30FB KATAKANA MIDDLE DOT from the non-recommended characters that force IDN labels to be displayed as punycode. Bug 857490, r=jfkthame
authorSimon Montagu <smontagu@smontagu.org>
Tue, 09 Apr 2013 05:47:03 -0700
changeset 128145 c1290c85d3db5a0b2ed469bb7b8699fcace81023
parent 128144 c2f229f146bac8f4d586ef2e4bc5e9c1383ab4f3
child 128146 3ae03ecf8b5ed6f3826f4db22bb8dee5d7e601ad
push id26166
push usersmontagu@mozilla.com
push dateTue, 09 Apr 2013 12:47:24 +0000
treeherdermozilla-inbound@c1290c85d3db [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjfkthame
bugs857490
milestone23.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Exclude U+30FB KATAKANA MIDDLE DOT from the non-recommended characters that force IDN labels to be displayed as punycode. Bug 857490, r=jfkthame
intl/unicharutil/tools/genUnicodePropertyData.pl
intl/unicharutil/util/nsUnicodePropertyData.cpp
netwerk/dns/nsIDNService.cpp
netwerk/test/unit/test_bug722299.js
--- a/intl/unicharutil/tools/genUnicodePropertyData.pl
+++ b/intl/unicharutil/tools/genUnicodePropertyData.pl
@@ -548,16 +548,18 @@ while (<FH>) {
     my $start = hex "0x$1";
     my $end = (defined $2) ? hex "0x$2" : $start;
     for (my $i = $start; $i <= $end; ++$i) {
       $xidmod[$i] = $xidmod;
     }
   }
 }
 close FH;
+# special case U+30FB KATAKANA MIDDLE DOT -- see bug 857490
+$xidmod[0x30FB] = 1;
 
 open FH, "< $ARGV[1]/Unihan_Variants.txt" or die "can't open UCD file Unihan_Variants.txt (from Unihan.zip)\n";
 push @versionInfo, "";
 while (<FH>) {
   chomp;
   push @versionInfo, $_;
   last if /Date:/;
 }
--- a/intl/unicharutil/util/nsUnicodePropertyData.cpp
+++ b/intl/unicharutil/util/nsUnicodePropertyData.cpp
@@ -6,17 +6,17 @@
 
 /*
  * Derived from the Unicode Character Database by genUnicodePropertyData.pl
  *
  * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html
  */
 
 /*
- * Created on Sun Nov  4 13:48:45 2012 from UCD data files with version info:
+ * Created on Wed Apr  3 14:44:28 2013 from UCD data files with version info:
  *
 
 # Date: 2012-09-24, 22:40:00 GMT [KW]
 #
 # Unicode Character Database
 # Copyright (c) 1991-2012 Unicode, Inc.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -662,17 +662,17 @@ static const nsCharProps2 sCharProp2Valu
   {{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1}},
   {{0,1,29,9,5,-1},{0,5,21,10,6,-1},{0,5,21,10,6,-1},{0,5,21,10,6,-1},{0,5,26,10,6,-1},{17,5,6,0,1,-1},{0,5,7,0,1,-1},{17,5,14,0,1,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,17,10,6,-1},{0,5,22,10,6,-1},{0,5,18,10,6,-1},{0,5,18,10,6,-1}},
   {{0,5,26,10,6,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{17,5,14,0,8,-1},{1,5,12,17,8,-1},{1,5,12,17,8,-1},{1,5,12,17,8,-1},{1,5,12,17,8,-1},{18,5,10,0,8,-1},{18,5,10,0,8,-1},{0,5,17,10,6,-1},{0,5,6,0,8,-1},{0,5,6,0,8,-1},{0,5,6,0,8,-1},{0,5,6,0,8,-1},{0,5,6,0,8,-1},{0,5,26,10,5,-1},{0,5,26,10,6,-1},{17,5,14,0,5,-1},{17,5,14,0,5,-1},{17,5,14,0,5,-1},{17,5,6,0,8,-1},{0,5,7,0,8,-1},{0,5,21,10,6,-1},{0,5,26,10,6,-1},{0,3,26,10,6,-1}},
   {{61,0,2,0,9,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1}},
   {{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1}},
   {{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{20,5,7,0,1,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{1,5,12,17,1,-1},{1,5,12,17,1,-1},{0,5,24,10,5,-1},{0,5,24,10,5,-1},{20,5,6,0,1,-1},{20,5,6,0,1,-1},{20,5,7,0,5,-1}},
   {{0,5,17,10,4,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1}},
   {{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1}},
-  {{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{0,5,21,10,4,-1},{0,5,6,0,1,-1},{22,5,6,0,1,-1},{22,5,6,0,1,-1},{22,5,7,0,5,-1}},
+  {{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{22,5,7,0,1,-1},{0,5,21,10,1,-1},{0,5,6,0,1,-1},{22,5,6,0,1,-1},{22,5,6,0,1,-1},{22,5,7,0,5,-1}},
   {{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1}},
   {{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1}},
   {{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1}},
   {{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,2,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1}},
   {{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{18,5,7,0,5,-1},{61,0,2,0,9,-1},{0,5,26,0,6,-1},{0,5,26,0,6,-1},{0,5,15,0,5,-1},{0,5,15,0,5,-1},{0,5,15,0,5,-1},{0,5,15,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1},{0,5,26,0,5,-1}},
   {{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{5,5,7,0,1,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1}},
   {{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1}},
   {{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{0,5,26,10,6,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{61,0,2,0,9,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1},{22,5,7,0,8,-1}},
--- a/netwerk/dns/nsIDNService.cpp
+++ b/netwerk/dns/nsIDNService.cpp
@@ -762,31 +762,27 @@ bool nsIDNService::isLabelSafe(const nsA
   while (current != end) {
     uint32_t ch = *current++;
 
     if (NS_IS_HIGH_SURROGATE(ch) && current != end &&
         NS_IS_LOW_SURROGATE(*current)) {
       ch = SURROGATE_TO_UCS4(ch, *current++);
     }
 
+    // Check for restricted characters; aspirational scripts are permitted
+    XidmodType xm = GetIdentifierModification(ch);
     int32_t script = GetScriptCode(ch);
-
-    // Special case U+30FB KATAKANA MIDDLE DOT, see bug 857490
-    if (ch != 0x30fb) {
-      // Check for restricted characters; aspirational scripts are permitted
-      XidmodType xm = GetIdentifierModification(ch);
-      if (xm > XIDMOD_RECOMMENDED &&
-          !(xm == XIDMOD_LIMITED_USE &&
-            (script == MOZ_SCRIPT_CANADIAN_ABORIGINAL ||
-             script == MOZ_SCRIPT_MIAO ||
-             script == MOZ_SCRIPT_MONGOLIAN ||
-             script == MOZ_SCRIPT_TIFINAGH ||
-             script == MOZ_SCRIPT_YI))) {
-        return false;
-      }
+    if (xm > XIDMOD_RECOMMENDED &&
+        !(xm == XIDMOD_LIMITED_USE &&
+          (script == MOZ_SCRIPT_CANADIAN_ABORIGINAL ||
+           script == MOZ_SCRIPT_MIAO ||
+           script == MOZ_SCRIPT_MONGOLIAN ||
+           script == MOZ_SCRIPT_TIFINAGH ||
+           script == MOZ_SCRIPT_YI))) {
+      return false;
     }
 
     // Check for mixed script
     if (script != MOZ_SCRIPT_COMMON &&
         script != MOZ_SCRIPT_INHERITED &&
         script != lastScript) {
       if (illegalScriptCombo(script, savedScript)) {
         return false;
--- a/netwerk/test/unit/test_bug722299.js
+++ b/netwerk/test/unit/test_bug722299.js
@@ -7,16 +7,19 @@ const testcases = [
     ["cuillère", "xn--cuillre-6xa",                  false, true,  true],
 
     // repeated non-spacing marks
     ["gruz̀̀ere",  "xn--gruzere-ogea",                 false, false, false],
 
     // non-XID character
     ["I♥NY",     "xn--iny-zx5a",                     false, false, false],
 
+    // U+30FB KATAKANA MIDDLE DOT is excluded from non-XID characters (bug 857490)
+    ["乾燥肌・石けん", "xn--08j4gylj12hz80b0uhfup",     false, true,  true],
+
     // Cyrillic alone
     ["толсто́й",  "xn--lsa83dealbred",                false, true,  true],
 
     // Mixed script Cyrillic/Latin
     ["толсто́й-in-Russian",
                  "xn---in-russian-1jg071b0a8bb4cpd", false, false, false],
 
     // Mixed script Latin/Cyrillic