Index: source/i18n/regexst.cpp |
diff --git a/source/i18n/regexst.cpp b/source/i18n/regexst.cpp |
index fa61c3de401ead00bc3992f4435057cebdd6e0c2..a8cbf23f86b9f02d98c57d17044920dca9a529a9 100644 |
--- a/source/i18n/regexst.cpp |
+++ b/source/i18n/regexst.cpp |
@@ -1,7 +1,7 @@ |
// |
// regexst.h |
// |
-// Copyright (C) 2004-2013, International Business Machines Corporation and others. |
+// Copyright (C) 2004-2015, International Business Machines Corporation and others. |
// All Rights Reserved. |
// |
// This file contains class RegexStaticSets |
@@ -55,11 +55,6 @@ static const UChar gRuleSet_rule_char_pattern[] = { |
// \ { \ } \ ^ \ $ \ | \ \ \ . ] |
0x5c, 0x7b,0x5c, 0x7d, 0x5c, 0x5e, 0x5c, 0x24, 0x5c, 0x7c, 0x5c, 0x5c, 0x5c, 0x2e, 0x5d, 0}; |
- |
-static const UChar gRuleSet_digit_char_pattern[] = { |
-// [ 0 - 9 ] |
- 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0}; |
- |
// |
// Here are the backslash escape characters that ICU's unescape() function |
// will handle. |
@@ -213,23 +208,29 @@ fEmptyText(NULL) |
// Sets used while parsing rules, but not referenced from the parse state table |
fRuleSets[kRuleSet_rule_char-128] = UnicodeSet(UnicodeString(TRUE, gRuleSet_rule_char_pattern, -1), *status); |
- fRuleSets[kRuleSet_digit_char-128] = UnicodeSet(UnicodeString(TRUE, gRuleSet_digit_char_pattern, -1), *status); |
+ fRuleSets[kRuleSet_digit_char-128].add((UChar)0x30, (UChar)0x39); // [0-9] |
+ fRuleSets[kRuleSet_ascii_letter-128].add((UChar)0x41, (UChar)0x5A); // [A-Z] |
+ fRuleSets[kRuleSet_ascii_letter-128].add((UChar)0x61, (UChar)0x7A); // [a-z] |
fRuleDigitsAlias = &fRuleSets[kRuleSet_digit_char-128]; |
- for (i=0; i<(int32_t)(sizeof(fRuleSets)/sizeof(fRuleSets[0])); i++) { |
+ for (i=0; i<UPRV_LENGTHOF(fRuleSets); i++) { |
fRuleSets[i].compact(); |
} |
// Finally, initialize an empty string for utility purposes |
fEmptyText = utext_openUChars(NULL, NULL, 0, status); |
- return; // If we reached this point, everything is fine so just exit |
+ if (U_SUCCESS(*status)) { |
+ return; |
+ } |
ExitConstrDeleteAll: // Remove fPropSets and fRuleSets and return error |
for (i=0; i<URX_LAST_SET; i++) { |
delete fPropSets[i]; |
fPropSets[i] = NULL; |
} |
- *status = U_MEMORY_ALLOCATION_ERROR; |
+ if (U_SUCCESS(*status)) { |
+ *status = U_MEMORY_ALLOCATION_ERROR; |
+ } |
} |