const char *aliasFrom = ures_getKey(res);\r
UnicodeString* aliasFromStr = new UnicodeString(aliasFrom);\r
UnicodeString aliasTo = ures_getUnicodeString(res,&status);\r
+ ures_close(res);\r
\r
Region *aliasToRegion = (Region *) uhash_get(regionIDMap,&aliasTo);\r
Region *aliasFromRegion = (Region *)uhash_get(regionIDMap,aliasFromStr);\r
if ( aliasToRegion != NULL && aliasFromRegion == NULL ) { // This is just an alias from some string to a region\r
uhash_put(regionAliases,(void *)aliasFromStr, (void *)aliasToRegion,&status);\r
} else {\r
- if ( aliasFromRegion == NULL ) { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.\r
+ if ( aliasFromRegion == NULL ) { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.\r
aliasFromRegion = new Region();\r
aliasFromRegion->idStr.setTo(*aliasFromStr);\r
aliasFromRegion->idStr.extract(0,aliasFromRegion->idStr.length(),aliasFromRegion->id,sizeof(aliasFromRegion->id),US_INV);\r
uhash_put(regionAliases,(void *)code3, (void *)r,&status);\r
} \r
}\r
+ ures_close(mapping);\r
}\r
\r
// Now fill in the special cases for WORLD, UNKNOWN, CONTINENTS, and GROUPINGS\r
pv->reset(status);\r
const UnicodeString *ustr = pv->snext(status);\r
r = (Region *)uhash_get(regionIDMap,(void *)ustr);\r
+ delete pv;\r
}\r
\r
return r;\r
pv->reset(status);\r
const UnicodeString *ustr = pv->snext(status);\r
r = (Region *)uhash_get(regionIDMap,(void *)ustr);\r
+ delete pv;\r
}\r
\r
return r;\r
loadRegionData();\r
\r
UErrorCode status = U_ZERO_ERROR;\r
- UVector *result = new UVector(uprv_deleteUObject, uhash_compareChars, status);\r
+ UVector *result = new UVector(NULL, uhash_compareChars, status);\r
\r
StringEnumeration *cr = getContainedRegions();\r
\r
const Region *r2 = Region::getInstance(id2,status);\r
result->addElement((void *)r2->id,status);\r
}\r
+ delete children;\r
}\r
}\r
return new RegionNameEnumeration(result,status);\r
return type;\r
}\r
\r
-RegionNameEnumeration::RegionNameEnumeration(UVector *fNameList, UErrorCode& /*status*/) {\r
+RegionNameEnumeration::RegionNameEnumeration(UVector *fNameList, UErrorCode& status) {\r
pos=0;\r
- fRegionNames = fNameList;\r
+ if (fNameList) {\r
+ fRegionNames = new UVector(NULL, uhash_compareChars, fNameList->size(),status);\r
+ for ( int32_t i = 0 ; i < fNameList->size() ; i++ ) {\r
+ char *region_name = (char *) uprv_malloc(sizeof(fNameList->elementAt(i)));\r
+ if (!region_name) {\r
+ status = U_MEMORY_ALLOCATION_ERROR;\r
+ delete fRegionNames;\r
+ fRegionNames = NULL;\r
+ return;\r
+ }\r
+ uprv_strcpy(region_name,(char *)fNameList->elementAt(i));\r
+ fRegionNames->addElement(region_name,status);\r
+ \r
+ }\r
+ }\r
+ else { \r
+ fRegionNames = fNameList;\r
+ }\r
}\r
\r
const char*\r