OLD | NEW |
1 /* | 1 /* |
2 ********************************************************************** | 2 ********************************************************************** |
3 * Copyright (c) 2002-2014, International Business Machines | 3 * Copyright (c) 2002-2014, International Business Machines |
4 * Corporation and others. All Rights Reserved. | 4 * Corporation and others. All Rights Reserved. |
5 ********************************************************************** | 5 ********************************************************************** |
6 */ | 6 */ |
7 | 7 |
8 #include "unicode/utypes.h" | 8 #include "unicode/utypes.h" |
9 | 9 |
10 #if !UCONFIG_NO_FORMATTING | 10 #if !UCONFIG_NO_FORMATTING |
(...skipping 989 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1000 } | 1000 } |
1001 | 1001 |
1002 // Get maximum currency name count first. | 1002 // Get maximum currency name count first. |
1003 getCurrencyNameCount(loc, total_currency_name_count, total_currency_symbol_c
ount); | 1003 getCurrencyNameCount(loc, total_currency_name_count, total_currency_symbol_c
ount); |
1004 | 1004 |
1005 *currencyNames = (CurrencyNameStruct*)uprv_malloc | 1005 *currencyNames = (CurrencyNameStruct*)uprv_malloc |
1006 (sizeof(CurrencyNameStruct) * (*total_currency_name_count)); | 1006 (sizeof(CurrencyNameStruct) * (*total_currency_name_count)); |
1007 *currencySymbols = (CurrencyNameStruct*)uprv_malloc | 1007 *currencySymbols = (CurrencyNameStruct*)uprv_malloc |
1008 (sizeof(CurrencyNameStruct) * (*total_currency_symbol_count)); | 1008 (sizeof(CurrencyNameStruct) * (*total_currency_symbol_count)); |
1009 | 1009 |
| 1010 if(currencyNames == NULL || currencySymbols == NULL) { |
| 1011 ec = U_MEMORY_ALLOCATION_ERROR; |
| 1012 } |
| 1013 |
| 1014 if (U_FAILURE(ec)) return; |
| 1015 |
1010 const UChar* s = NULL; // currency name | 1016 const UChar* s = NULL; // currency name |
1011 char* iso = NULL; // currency ISO code | 1017 char* iso = NULL; // currency ISO code |
1012 | 1018 |
1013 *total_currency_name_count = 0; | 1019 *total_currency_name_count = 0; |
1014 *total_currency_symbol_count = 0; | 1020 *total_currency_symbol_count = 0; |
1015 | 1021 |
1016 UErrorCode ec3 = U_ZERO_ERROR; | 1022 UErrorCode ec3 = U_ZERO_ERROR; |
1017 UErrorCode ec4 = U_ZERO_ERROR; | 1023 UErrorCode ec4 = U_ZERO_ERROR; |
1018 | 1024 |
1019 // Using hash to remove duplicates caused by locale fallback | 1025 // Using hash to remove duplicates caused by locale fallback |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1167 for (int32_t index = 0; index < *total_currency_symbol_count; ++index) { | 1173 for (int32_t index = 0; index < *total_currency_symbol_count; ++index) { |
1168 printf("index: %d\n", index); | 1174 printf("index: %d\n", index); |
1169 printf("iso: %s\n", (*currencySymbols)[index].IsoCode); | 1175 printf("iso: %s\n", (*currencySymbols)[index].IsoCode); |
1170 char curNameBuf[1024]; | 1176 char curNameBuf[1024]; |
1171 memset(curNameBuf, 0, 1024); | 1177 memset(curNameBuf, 0, 1024); |
1172 u_austrncpy(curNameBuf, (*currencySymbols)[index].currencyName, (*curren
cySymbols)[index].currencyNameLen); | 1178 u_austrncpy(curNameBuf, (*currencySymbols)[index].currencyName, (*curren
cySymbols)[index].currencyNameLen); |
1173 printf("currencySymbol: %s\n", curNameBuf); | 1179 printf("currencySymbol: %s\n", curNameBuf); |
1174 printf("len: %d\n", (*currencySymbols)[index].currencyNameLen); | 1180 printf("len: %d\n", (*currencySymbols)[index].currencyNameLen); |
1175 } | 1181 } |
1176 #endif | 1182 #endif |
| 1183 // fail on hashtable errors |
| 1184 if (U_FAILURE(ec3)) { |
| 1185 ec = ec3; |
| 1186 return; |
| 1187 } |
| 1188 if (U_FAILURE(ec4)) { |
| 1189 ec = ec4; |
| 1190 return; |
| 1191 } |
1177 } | 1192 } |
1178 | 1193 |
1179 // @param currencyNames: currency names array | 1194 // @param currencyNames: currency names array |
1180 // @param indexInCurrencyNames: the index of the character in currency names | 1195 // @param indexInCurrencyNames: the index of the character in currency names |
1181 // array against which the comparison is done | 1196 // array against which the comparison is done |
1182 // @param key: input text char to compare against | 1197 // @param key: input text char to compare against |
1183 // @param begin(IN/OUT): the begin index of matching range in currency names ar
ray | 1198 // @param begin(IN/OUT): the begin index of matching range in currency names ar
ray |
1184 // @param end(IN/OUT): the end index of matching range in currency names array. | 1199 // @param end(IN/OUT): the end index of matching range in currency names array. |
1185 static int32_t | 1200 static int32_t |
1186 binarySearch(const CurrencyNameStruct* currencyNames, | 1201 binarySearch(const CurrencyNameStruct* currencyNames, |
(...skipping 1503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2690 code = tmpCode; | 2705 code = tmpCode; |
2691 } | 2706 } |
2692 } | 2707 } |
2693 ures_close(bundle); | 2708 ures_close(bundle); |
2694 } | 2709 } |
2695 return code; | 2710 return code; |
2696 } | 2711 } |
2697 #endif /* #if !UCONFIG_NO_FORMATTING */ | 2712 #endif /* #if !UCONFIG_NO_FORMATTING */ |
2698 | 2713 |
2699 //eof | 2714 //eof |
OLD | NEW |