forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-qt/qtwebengine: Fixed build with icu-67
Package-Manager: Portage-2.3.99, Repoman-2.3.22 Signed-off-by: Lars Wendler <[email protected]>
- Loading branch information
Lars Wendler
committed
Apr 29, 2020
1 parent
aa51f1e
commit a2fe6a6
Showing
2 changed files
with
173 additions
and
1 deletion.
There are no files selected for viewing
169 changes: 169 additions & 0 deletions
169
dev-qt/qtwebengine/files/qtwebengine-5.14.2-icu67.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
From 2b107e7670ffb43719a66ee4a55ab408a5dcf2a5 Mon Sep 17 00:00:00 2001 | ||
From: Ujjwal Sharma <[email protected]> | ||
Date: Wed, 22 Apr 2020 12:20:17 +0530 | ||
Subject: [PATCH] deps: V8: backport 3f8dc4b2e5ba | ||
|
||
Original commit message: | ||
|
||
[intl] Remove soon-to-be removed getAllFieldPositions | ||
|
||
Needed to land ICU67.1 soon. | ||
|
||
Bug: v8:10393 | ||
Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618 | ||
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489 | ||
Reviewed-by: Jakob Kummerow <[email protected]> | ||
Commit-Queue: Frank Tang <[email protected]> | ||
Cr-Commit-Position: refs/heads/master@{#67027} | ||
|
||
Refs: https://github.com/v8/v8/commit/3f8dc4b2e5baf77b463334c769af85b79d8c1463 | ||
--- | ||
common.gypi | 2 +- | ||
src/3rdparty/chromium/v8/src/objects/js-number-format.cc | 72 +++++++++++++------------ | ||
2 files changed, 38 insertions(+), 36 deletions(-) | ||
|
||
diff --git a/deps/v8/src/objects/js-number-format.cc b/deps/v8/src/objects/js-number-format.cc | ||
index 92d3e2fb82e..ced408aa173 100644 | ||
--- a/src/3rdparty/chromium/v8/src/objects/js-number-format.cc | ||
+++ b/src/3rdparty/chromium/v8/src/objects/js-number-format.cc | ||
@@ -1197,42 +1197,31 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate, | ||
} | ||
|
||
namespace { | ||
-Maybe<icu::UnicodeString> IcuFormatNumber( | ||
+Maybe<bool> IcuFormatNumber( | ||
Isolate* isolate, | ||
const icu::number::LocalizedNumberFormatter& number_format, | ||
- Handle<Object> numeric_obj, icu::FieldPositionIterator* fp_iter) { | ||
+ Handle<Object> numeric_obj, icu::number::FormattedNumber* formatted) { | ||
// If it is BigInt, handle it differently. | ||
UErrorCode status = U_ZERO_ERROR; | ||
- icu::number::FormattedNumber formatted; | ||
if (numeric_obj->IsBigInt()) { | ||
Handle<BigInt> big_int = Handle<BigInt>::cast(numeric_obj); | ||
Handle<String> big_int_string; | ||
ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, | ||
BigInt::ToString(isolate, big_int), | ||
- Nothing<icu::UnicodeString>()); | ||
- formatted = number_format.formatDecimal( | ||
+ Nothing<bool>()); | ||
+ *formatted = number_format.formatDecimal( | ||
{big_int_string->ToCString().get(), big_int_string->length()}, status); | ||
} else { | ||
double number = numeric_obj->Number(); | ||
- formatted = number_format.formatDouble(number, status); | ||
+ *formatted = number_format.formatDouble(number, status); | ||
} | ||
if (U_FAILURE(status)) { | ||
// This happen because of icu data trimming trim out "unit". | ||
// See https://bugs.chromium.org/p/v8/issues/detail?id=8641 | ||
- THROW_NEW_ERROR_RETURN_VALUE(isolate, | ||
- NewTypeError(MessageTemplate::kIcuError), | ||
- Nothing<icu::UnicodeString>()); | ||
- } | ||
- if (fp_iter) { | ||
- formatted.getAllFieldPositions(*fp_iter, status); | ||
+ THROW_NEW_ERROR_RETURN_VALUE( | ||
+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>()); | ||
} | ||
- icu::UnicodeString result = formatted.toString(status); | ||
- if (U_FAILURE(status)) { | ||
- THROW_NEW_ERROR_RETURN_VALUE(isolate, | ||
- NewTypeError(MessageTemplate::kIcuError), | ||
- Nothing<icu::UnicodeString>()); | ||
- } | ||
- return Just(result); | ||
+ return Just(true); | ||
} | ||
|
||
} // namespace | ||
@@ -1243,10 +1232,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric( | ||
Handle<Object> numeric_obj) { | ||
DCHECK(numeric_obj->IsNumeric()); | ||
|
||
- Maybe<icu::UnicodeString> maybe_format = | ||
- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); | ||
+ icu::number::FormattedNumber formatted; | ||
+ Maybe<bool> maybe_format = | ||
+ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); | ||
MAYBE_RETURN(maybe_format, Handle<String>()); | ||
- return Intl::ToString(isolate, maybe_format.FromJust()); | ||
+ UErrorCode status = U_ZERO_ERROR; | ||
+ icu::UnicodeString result = formatted.toString(status); | ||
+ if (U_FAILURE(status)) { | ||
+ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); | ||
+ } | ||
+ return Intl::ToString(isolate, result); | ||
} | ||
|
||
namespace { | ||
@@ -1359,12 +1354,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts( | ||
} | ||
|
||
namespace { | ||
-Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, | ||
- icu::FieldPositionIterator* fp_iter, | ||
+Maybe<int> ConstructParts(Isolate* isolate, | ||
+ icu::number::FormattedNumber* formatted, | ||
Handle<JSArray> result, int start_index, | ||
Handle<Object> numeric_obj, bool style_is_unit) { | ||
+ UErrorCode status = U_ZERO_ERROR; | ||
+ icu::UnicodeString formatted_text = formatted->toString(status); | ||
+ if (U_FAILURE(status)) { | ||
+ THROW_NEW_ERROR_RETURN_VALUE( | ||
+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<int>()); | ||
+ } | ||
DCHECK(numeric_obj->IsNumeric()); | ||
- int32_t length = formatted.length(); | ||
+ int32_t length = formatted_text.length(); | ||
int index = start_index; | ||
if (length == 0) return Just(index); | ||
|
||
@@ -1373,13 +1374,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, | ||
// other region covers some part of the formatted string. It's possible | ||
// there's another field with exactly the same begin and end as this backdrop, | ||
// in which case the backdrop's field_id of -1 will give it lower priority. | ||
- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); | ||
+ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); | ||
|
||
{ | ||
- icu::FieldPosition fp; | ||
- while (fp_iter->next(fp)) { | ||
- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), | ||
- fp.getEndIndex())); | ||
+ icu::ConstrainedFieldPosition cfp; | ||
+ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); | ||
+ while (formatted->nextPosition(cfp, status)) { | ||
+ regions.push_back( | ||
+ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); | ||
} | ||
} | ||
|
||
@@ -1401,7 +1403,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, | ||
Handle<String> substring; | ||
ASSIGN_RETURN_ON_EXCEPTION_VALUE( | ||
isolate, substring, | ||
- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), | ||
+ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), | ||
Nothing<int>()); | ||
Intl::AddElement(isolate, result, index, field_type_string, substring); | ||
++index; | ||
@@ -1421,14 +1423,14 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts( | ||
number_format->icu_number_formatter().raw(); | ||
CHECK_NOT_NULL(fmt); | ||
|
||
- icu::FieldPositionIterator fp_iter; | ||
- Maybe<icu::UnicodeString> maybe_format = | ||
- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); | ||
+ icu::number::FormattedNumber formatted; | ||
+ Maybe<bool> maybe_format = | ||
+ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); | ||
MAYBE_RETURN(maybe_format, Handle<JSArray>()); | ||
|
||
Handle<JSArray> result = factory->NewJSArray(0); | ||
Maybe<int> maybe_format_to_parts = ConstructParts( | ||
- isolate, maybe_format.FromJust(), &fp_iter, result, 0, numeric_obj, | ||
+ isolate, &formatted, result, 0, numeric_obj, | ||
number_format->style() == JSNumberFormat::Style::UNIT); | ||
MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>()); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters