| 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;
 | 
| +    }
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |