From 4f8296e079f10a646ff616ff9441c9f7a9545219 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Thu, 10 Sep 2015 22:49:03 +0000 Subject: [PATCH] ICU-11709 Fix leak in NumberingSystem::getAvailableNames; rename variables to avoid confusion X-SVN-Rev: 37944 --- icu4c/source/i18n/numsys.cpp | 10 +++++----- icu4c/source/i18n/numsys_impl.h | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/icu4c/source/i18n/numsys.cpp b/icu4c/source/i18n/numsys.cpp index 4933af83d94..37f3aa75fcc 100644 --- a/icu4c/source/i18n/numsys.cpp +++ b/icu4c/source/i18n/numsys.cpp @@ -252,7 +252,7 @@ StringEnumeration* NumberingSystem::getAvailableNames(UErrorCode &status) { } if ( availableNames == NULL ) { - UVector *fNumsysNames = new UVector(uprv_deleteUObject, NULL, status); + LocalPointer 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* diff --git a/icu4c/source/i18n/numsys_impl.h b/icu4c/source/i18n/numsys_impl.h index 7ce4ef360fc..7ba3f4494f3 100644 --- a/icu4c/source/i18n/numsys_impl.h +++ b/icu4c/source/i18n/numsys_impl.h @@ -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;