]> granicus.if.org Git - icu/commitdiff
ICU-11709 Fix leak in NumberingSystem::getAvailableNames; rename variables to avoid...
authorPeter Edberg <pedberg@unicode.org>
Thu, 10 Sep 2015 22:49:03 +0000 (22:49 +0000)
committerPeter Edberg <pedberg@unicode.org>
Thu, 10 Sep 2015 22:49:03 +0000 (22:49 +0000)
X-SVN-Rev: 37944

icu4c/source/i18n/numsys.cpp
icu4c/source/i18n/numsys_impl.h

index 4933af83d940a44758d821316aa20b0d80fe105d..37f3aa75fcccc8ec36682e920f678eee0c63c175 100644 (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*
index 7ce4ef360fc214b9467521f8d5a8b2a983e55243..7ba3f4494f36cb1098ad1567f6a6b710a9b7333d 100644 (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;