Index: source/tools/toolutil/pkg_icu.cpp |
diff --git a/source/tools/toolutil/pkg_icu.cpp b/source/tools/toolutil/pkg_icu.cpp |
index c2f3904878dc3a4c690de991fe9d3ec5ed754fd7..471b1d45ec1220691c4513f5bea54c817c7761f4 100644 |
--- a/source/tools/toolutil/pkg_icu.cpp |
+++ b/source/tools/toolutil/pkg_icu.cpp |
@@ -1,9 +1,10 @@ |
/****************************************************************************** |
- * Copyright (C) 2008-2014, International Business Machines |
+ * Copyright (C) 2008-2015, International Business Machines |
* Corporation and others. All Rights Reserved. |
******************************************************************************* |
*/ |
#include "unicode/utypes.h" |
+#include "unicode/localpointer.h" |
#include "unicode/putil.h" |
#include "cstring.h" |
#include "toolutil.h" |
@@ -149,33 +150,25 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag |
U_CAPI int U_EXPORT2 |
writePackageDatFile(const char *outFilename, const char *outComment, const char *sourcePath, const char *addList, Package *pkg, char outType) { |
- Package *addListPkg = NULL; |
- UBool pkgDelete = FALSE; |
+ LocalPointer<Package> ownedPkg; |
+ LocalPointer<Package> addListPkg; |
if (pkg == NULL) { |
- pkg = new Package; |
- if(pkg == NULL) { |
+ ownedPkg.adoptInstead(new Package); |
+ if(ownedPkg.isNull()) { |
fprintf(stderr, "icupkg: not enough memory\n"); |
return U_MEMORY_ALLOCATION_ERROR; |
} |
+ pkg = ownedPkg.getAlias(); |
- addListPkg = readList(sourcePath, addList, TRUE, NULL); |
- if(addListPkg != NULL) { |
+ addListPkg.adoptInstead(readList(sourcePath, addList, TRUE, NULL)); |
+ if(addListPkg.isValid()) { |
pkg->addItems(*addListPkg); |
} else { |
return U_ILLEGAL_ARGUMENT_ERROR; |
} |
- |
- pkgDelete = TRUE; |
} |
pkg->writePackage(outFilename, outType, outComment); |
- |
- if (pkgDelete) { |
- delete pkg; |
- delete addListPkg; |
- } |
- |
return 0; |
} |
- |