ICU-11709 Fix leak in NumberingSystem::getAvailableNames; rename variables to avoid confusion

X-SVN-Rev: 37944
This commit is contained in:
Peter Edberg 2015-09-10 22:49:03 +00:00
parent 003c9da518
commit 4f8296e079
2 changed files with 9 additions and 7 deletions

View file

@ -252,7 +252,7 @@ StringEnumeration* NumberingSystem::getAvailableNames(UErrorCode &status) {
}
if ( availableNames == NULL ) {
UVector *fNumsysNames = new UVector(uprv_deleteUObject, NULL, status);
LocalPointer<UVector> numsysNames(new UVector(uprv_deleteUObject, NULL, status), status);
if (U_FAILURE(status)) {
status = U_MEMORY_ALLOCATION_ERROR;
return NULL;
@ -270,21 +270,21 @@ StringEnumeration* NumberingSystem::getAvailableNames(UErrorCode &status) {
while ( ures_hasNext(numberingSystemsInfo) ) {
UResourceBundle *nsCurrent = ures_getNextResource(numberingSystemsInfo,NULL,&rbstatus);
const char *nsName = ures_getKey(nsCurrent);
fNumsysNames->addElement(new UnicodeString(nsName, -1, US_INV),status);
numsysNames->addElement(new UnicodeString(nsName, -1, US_INV),status);
ures_close(nsCurrent);
}
ures_close(numberingSystemsInfo);
availableNames = new NumsysNameEnumeration(fNumsysNames,status);
availableNames = new NumsysNameEnumeration(numsysNames.orphan(),status);
}
return availableNames;
}
NumsysNameEnumeration::NumsysNameEnumeration(UVector *fNameList, UErrorCode& /*status*/) {
NumsysNameEnumeration::NumsysNameEnumeration(UVector *numsysNames, UErrorCode& /*status*/) {
pos=0;
fNumsysNames = fNameList;
fNumsysNames = numsysNames;
}
const UnicodeString*

View file

@ -1,6 +1,6 @@
/*
*******************************************************************************
* Copyright (C) 2011, International Business Machines Corporation and
* Copyright (C) 2015, International Business Machines Corporation and
* others. All Rights Reserved. *
*******************************************************************************
*
@ -24,7 +24,9 @@ U_NAMESPACE_BEGIN
class NumsysNameEnumeration : public StringEnumeration {
public:
NumsysNameEnumeration(UVector *fNumsysNames, UErrorCode& status);
// NumsysNameEnumeration instance adopts numsysNames
NumsysNameEnumeration(UVector *numsysNames, UErrorCode& status);
virtual ~NumsysNameEnumeration();
static UClassID U_EXPORT2 getStaticClassID(void);
virtual UClassID getDynamicClassID(void) const;