Title: [268318] trunk
Revision
268318
Author
ysuz...@apple.com
Date
2020-10-11 03:26:11 -0700 (Sun, 11 Oct 2020)

Log Message

[JSC] LowerCase when LanguageTag checks duplicate variants
https://bugs.webkit.org/show_bug.cgi?id=217571

Reviewed by Ross Kirsling.

JSTests:

* stress/intl-language-tag.js:

Source/_javascript_Core:

Since Unicode LanguageTag is case insensitive, we need to recognize "VARIANT0" and "variant0" are the same language tag variants.
To achieve that, we perform toASCIILower when computing VariantCode.

* runtime/IntlObject.cpp:
(JSC::parseVariantCode):

Modified Paths

Diff

Modified: trunk/JSTests/ChangeLog (268317 => 268318)


--- trunk/JSTests/ChangeLog	2020-10-11 08:48:50 UTC (rev 268317)
+++ trunk/JSTests/ChangeLog	2020-10-11 10:26:11 UTC (rev 268318)
@@ -1,3 +1,12 @@
+2020-10-11  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [JSC] LowerCase when LanguageTag checks duplicate variants
+        https://bugs.webkit.org/show_bug.cgi?id=217571
+
+        Reviewed by Ross Kirsling.
+
+        * stress/intl-language-tag.js:
+
 2020-10-07  Ross Kirsling  <ross.kirsl...@sony.com>
 
         [JSC] Revert String.prototype.item

Modified: trunk/JSTests/stress/intl-language-tag.js (268317 => 268318)


--- trunk/JSTests/stress/intl-language-tag.js	2020-10-11 08:48:50 UTC (rev 268317)
+++ trunk/JSTests/stress/intl-language-tag.js	2020-10-11 10:26:11 UTC (rev 268318)
@@ -96,4 +96,15 @@
 shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-a0-000-a1"), RangeError);
 shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-a0-a1"), RangeError);
 shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GBBBBBBBBBB"), RangeError);
+
+shouldThrow(() => Intl.getCanonicalLocales("en-US-variant0-variant0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-Variant0-variant0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-VARIANt0-VARIANT0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-variant0-testing-variant0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-Variant0-testing-variant0"), RangeError);
+
 shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-variant0-variant0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-Variant0-variant0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-VARIANt0-VARIANT0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-variant0-testing-variant0"), RangeError);
+shouldThrow(() => Intl.getCanonicalLocales("en-US-t-en-GB-Variant0-testing-variant0"), RangeError);

Modified: trunk/Source/_javascript_Core/ChangeLog (268317 => 268318)


--- trunk/Source/_javascript_Core/ChangeLog	2020-10-11 08:48:50 UTC (rev 268317)
+++ trunk/Source/_javascript_Core/ChangeLog	2020-10-11 10:26:11 UTC (rev 268318)
@@ -1,3 +1,16 @@
+2020-10-11  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [JSC] LowerCase when LanguageTag checks duplicate variants
+        https://bugs.webkit.org/show_bug.cgi?id=217571
+
+        Reviewed by Ross Kirsling.
+
+        Since Unicode LanguageTag is case insensitive, we need to recognize "VARIANT0" and "variant0" are the same language tag variants.
+        To achieve that, we perform toASCIILower when computing VariantCode.
+
+        * runtime/IntlObject.cpp:
+        (JSC::parseVariantCode):
+
 2020-10-09  Yusuke Suzuki  <ysuz...@apple.com>
 
         [JSC] Assert Operation and HostFunction are in JITOperationsList

Modified: trunk/Source/_javascript_Core/runtime/IntlObject.cpp (268317 => 268318)


--- trunk/Source/_javascript_Core/runtime/IntlObject.cpp	2020-10-11 08:48:50 UTC (rev 268317)
+++ trunk/Source/_javascript_Core/runtime/IntlObject.cpp	2020-10-11 10:26:11 UTC (rev 268318)
@@ -1015,7 +1015,7 @@
     static_assert(sizeof(VariantCode) == sizeof(Code));
     Code code { };
     for (unsigned index = 0; index < string.length(); ++index)
-        code.characters[index] = string[index];
+        code.characters[index] = toASCIILower(string[index]);
     VariantCode result = bitwise_cast<VariantCode>(code);
     ASSERT(result); // Not possible since some characters exist.
     ASSERT(result != static_cast<VariantCode>(-1)); // Not possible since all characters are ASCII (not Latin-1).
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to