Commit fb3a854e authored by Frank Tang's avatar Frank Tang Committed by Commit Bot

Fix BestFitMatcher due to invalid locale id in ICU

Somehow we have no-NO-NY locale data in ICU and cause problem.

Bug: v8:11595
Change-Id: I68ba4c4c219bb3fbc88976f901a86219c44ea265
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2782602Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73818}
parent e8e9e40d
......@@ -1472,13 +1472,19 @@ icu::LocaleMatcher BuildLocaleMatcher(
UErrorCode* status) {
icu::Locale default_locale =
icu::Locale::forLanguageTag(DefaultLocale(isolate), *status);
DCHECK(U_SUCCESS(*status));
icu::LocaleMatcher::Builder builder;
if (U_FAILURE(*status)) {
return builder.build(*status);
}
builder.setDefaultLocale(&default_locale);
for (auto it = available_locales.begin(); it != available_locales.end();
++it) {
builder.addSupportedLocale(
icu::Locale::forLanguageTag(it->c_str(), *status));
*status = U_ZERO_ERROR;
icu::Locale l = icu::Locale::forLanguageTag(it->c_str(), *status);
// skip invalid locale such as no-NO-NY
if (U_SUCCESS(*status)) {
builder.addSupportedLocale(l);
}
}
return builder.build(*status);
......
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony_intl_best_fit_matcher
const intl_objects = [
Intl.Collator,
Intl.DateTimeFormat,
Intl.DisplayNames,
Intl.ListFormat,
Intl.NumberFormat,
Intl.PluralRules,
Intl.RelativeTimeFormat,
Intl.Segmenter,
];
// Just ensure the f.supportedLocalesOf won't cause crash.
intl_objects.forEach(f => {
let supported = f.supportedLocalesOf(["en"]);
assertEquals(1, supported.length);
assertEquals("en", supported[0]);
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment