| Index: src/runtime/runtime-i18n.cc
|
| diff --git a/src/runtime/runtime-i18n.cc b/src/runtime/runtime-i18n.cc
|
| index 7d2594cd327fa6db1246110a17083ef7096160c3..fb6fbe76070ac667d73b72ee75e515fe9913e1f1 100644
|
| --- a/src/runtime/runtime-i18n.cc
|
| +++ b/src/runtime/runtime-i18n.cc
|
| @@ -859,8 +859,10 @@ MUST_USE_RESULT Object* LocaleConvertCase(Handle<String> s, Isolate* isolate,
|
| // This is not a real loop. It'll be executed only once (no overflow) or
|
| // twice (overflow).
|
| for (int i = 0; i < 2; ++i) {
|
| - result =
|
| - isolate->factory()->NewRawTwoByteString(dest_length).ToHandleChecked();
|
| + // Case conversion can increase the string length (e.g. sharp-S => SS) so
|
| + // that we have to handle RangeError exceptions here.
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, result, isolate->factory()->NewRawTwoByteString(dest_length));
|
| DisallowHeapAllocation no_gc;
|
| String::FlatContent flat = s->GetFlatContent();
|
| const UChar* src = GetUCharBufferFromFlat(flat, &sap, src_length);
|
|
|