Index: third_party/WebKit/Source/core/layout/ListMarkerText.cpp |
diff --git a/third_party/WebKit/Source/core/layout/ListMarkerText.cpp b/third_party/WebKit/Source/core/layout/ListMarkerText.cpp |
index 612d483badb17378e95a6ee311c448f414613721..84ac3fb145778ac12a7f9e435cbccbcb3502d6bb 100644 |
--- a/third_party/WebKit/Source/core/layout/ListMarkerText.cpp |
+++ b/third_party/WebKit/Source/core/layout/ListMarkerText.cpp |
@@ -158,32 +158,29 @@ static inline String toSymbolic(int number, const CharacterType(&alphabet)[size] |
return toSymbolic(number, alphabet, size); |
} |
-static int toHebrewUnder1000(int number, UChar letters[5]) |
+static void toHebrewUnder1000(int number, Vector<UChar>& letters) |
{ |
// FIXME: CSS3 mentions various refinements not implemented here. |
// FIXME: Should take a look at Mozilla's HebrewToText function (in nsBulletFrame). |
ASSERT(number >= 0 && number < 1000); |
- int length = 0; |
int fourHundreds = number / 400; |
for (int i = 0; i < fourHundreds; i++) |
- letters[length++] = 1511 + 3; |
+ letters.prepend(1511 + 3); |
number %= 400; |
if (number / 100) |
- letters[length++] = 1511 + (number / 100) - 1; |
+ letters.prepend(1511 + (number / 100) - 1); |
number %= 100; |
if (number == 15 || number == 16) { |
- letters[length++] = 1487 + 9; |
- letters[length++] = 1487 + number - 9; |
+ letters.prepend(1487 + 9); |
+ letters.prepend(1487 + number - 9); |
} else { |
if (int tens = number / 10) { |
static const UChar hebrewTens[9] = { 1497, 1499, 1500, 1502, 1504, 1505, 1506, 1508, 1510 }; |
- letters[length++] = hebrewTens[tens - 1]; |
+ letters.prepend(hebrewTens[tens - 1]); |
} |
if (int ones = number % 10) |
- letters[length++] = 1487 + ones; |
+ letters.prepend(1487 + ones); |
} |
- ASSERT(length <= 5); |
- return length; |
} |
static String toHebrew(int number) |
@@ -192,25 +189,18 @@ static String toHebrew(int number) |
ASSERT(number >= 0 && number <= 999999); |
if (number == 0) { |
- static const UChar hebrewZero[3] = { 0x05D0, 0x05E4, 0x05E1 }; |
+ static const UChar hebrewZero[3] = { 0x05E1, 0x05E4, 0x05D0 }; |
return String(hebrewZero, 3); |
} |
- const int lettersSize = 11; // big enough for two 5-digit sequences plus a quote mark between |
- UChar letters[lettersSize]; |
- |
- int length; |
- if (number < 1000) { |
- length = 0; |
- } else { |
- length = toHebrewUnder1000(number / 1000, letters); |
- letters[length++] = '\''; |
+ Vector<UChar> letters; |
+ if (number > 999) { |
+ toHebrewUnder1000(number / 1000, letters); |
+ letters.prepend('\''); |
number = number % 1000; |
} |
- length += toHebrewUnder1000(number, letters + length); |
- |
- ASSERT(length <= lettersSize); |
- return String(letters, length); |
+ toHebrewUnder1000(number, letters); |
+ return String(letters); |
} |
static int toArmenianUnder10000(int number, bool upper, bool addCircumflex, UChar letters[9]) |