diff -urN icu.old/source/common/uloc_keytype.cpp icu/source/common/uloc_keytype.cpp --- icu.old/source/common/uloc_keytype.cpp 2017-02-01 01:21:30.000000000 +0530 +++ icu/source/common/uloc_keytype.cpp 2018-09-23 18:48:04.414990551 +0530 @@ -383,6 +383,7 @@ LocExtKeyData* keyData = (LocExtKeyData*)uprv_malloc(sizeof(LocExtKeyData)); if (keyData == NULL) { sts = U_MEMORY_ALLOCATION_ERROR; + uprv_free(typeDataMap); break; } keyData->bcpId = bcpKeyId; diff -urN icu.old/source/common/uloc_tag.cpp icu/source/common/uloc_tag.cpp --- icu.old/source/common/uloc_tag.cpp 2017-10-11 21:54:34.000000000 +0530 +++ icu/source/common/uloc_tag.cpp 2018-09-23 18:48:58.207182317 +0530 @@ -2145,6 +2145,7 @@ error: ultag_close(t); + uprv_free(pExtension); return NULL; } diff -urN icu.old/source/i18n/olsontz.cpp icu/source/i18n/olsontz.cpp --- icu.old/source/i18n/olsontz.cpp 2017-02-01 01:21:27.000000000 +0530 +++ icu/source/i18n/olsontz.cpp 2018-09-23 18:52:02.140418739 +0530 @@ -787,6 +787,7 @@ if (historicRules[typeIdx] == NULL) { status = U_MEMORY_ALLOCATION_ERROR; deleteTransitionRules(); + uprv_free(times); return; } } diff -urN icu.old/source/i18n/rbt_pars.cpp icu/source/i18n/rbt_pars.cpp --- icu.old/source/i18n/rbt_pars.cpp 2017-02-01 01:21:27.000000000 +0530 +++ icu/source/i18n/rbt_pars.cpp 2018-09-23 18:52:51.362679180 +0530 @@ -557,6 +557,7 @@ // The next character MUST be a segment open if (single == NULL || !ICU_Utility::parseChar(rule, iref, SEGMENT_OPEN)) { + uprv_free(single); return syntaxError(U_INVALID_FUNCTION, rule, start, status); } diff -urN icu.old/source/i18n/tznames_impl.cpp icu/source/i18n/tznames_impl.cpp --- icu.old/source/i18n/tznames_impl.cpp 2017-10-11 21:54:34.000000000 +0530 +++ icu/source/i18n/tznames_impl.cpp 2018-09-23 18:55:36.222152997 +0530 @@ -1762,6 +1762,7 @@ UResourceBundle* rbTable = NULL; rbTable = ures_getByKey(rb, key, rbTable, &status); if (U_FAILURE(status)) { + uprv_free(rbTable); return NULL; } @@ -1784,6 +1785,7 @@ if (names != NULL) { uprv_free(names); } + uprv_free(rbTable); return NULL; } diff -urN icu.old/source/i18n/usearch.cpp icu/source/i18n/usearch.cpp --- icu.old/source/i18n/usearch.cpp 2017-02-01 01:21:27.000000000 +0530 +++ icu/source/i18n/usearch.cpp 2018-09-23 18:54:34.752103865 +0530 @@ -222,6 +222,7 @@ int32_t *temp = (int32_t *)allocateMemory( sizeof(int32_t) * newlength, status); if (U_FAILURE(*status)) { + uprv_free(temp); return NULL; } uprv_memcpy(temp, destination, sizeof(int32_t) * (size_t)offset); @@ -263,6 +264,7 @@ sizeof(int64_t) * newlength, status); if (U_FAILURE(*status)) { + uprv_free(temp); return NULL; } diff -urN icu.old/source/tools/ctestfw/ctest.c icu/source/tools/ctestfw/ctest.c --- icu.old/source/tools/ctestfw/ctest.c 2017-02-01 01:21:30.000000000 +0530 +++ icu/source/tools/ctestfw/ctest.c 2018-09-23 18:19:43.612734248 +0530 @@ -803,6 +803,7 @@ } va_start(ap, pattern); vlog_err(NULL, pattern, ap); + va_end(ap); } UBool T_CTEST_EXPORT2 @@ -810,6 +811,7 @@ va_list ap; va_start(ap, pattern); return vlog_knownIssue(ticket, pattern, ap); + va_end(ap); } void T_CTEST_EXPORT2 @@ -843,6 +845,7 @@ } vlog_err(NULL, pattern, ap); /* no need for prefix in default case */ } + va_end(ap); } void T_CTEST_EXPORT2 @@ -852,6 +855,7 @@ va_start(ap, pattern); vlog_info(NULL, pattern, ap); + va_end(ap); } void T_CTEST_EXPORT2 @@ -861,6 +865,7 @@ va_start(ap, pattern); vlog_verbose(NULL, pattern, ap); + va_end(ap); } @@ -882,6 +887,7 @@ } else { vlog_info("[DATA] ", pattern, ap); } + va_end(ap); } diff -urN icu.old/source/tools/gensprep/store.c icu/source/tools/gensprep/store.c --- icu.old/source/tools/gensprep/store.c 2017-02-08 00:27:35.000000000 +0530 +++ icu/source/tools/gensprep/store.c 2018-09-23 17:42:52.262908882 +0530 @@ -634,7 +634,6 @@ cleanUpData(void) { uprv_free(mappingData); utrie_close(sprepTrie); - uprv_free(sprepTrie); } #endif /* #if !UCONFIG_NO_IDNA */ diff -urN icu.old/source/tools/pkgdata/pkgdata.cpp icu/source/tools/pkgdata/pkgdata.cpp --- icu.old/source/tools/pkgdata/pkgdata.cpp 2017-03-23 04:56:34.000000000 +0530 +++ icu/source/tools/pkgdata/pkgdata.cpp 2018-09-23 17:40:19.730240502 +0530 @@ -1531,11 +1531,11 @@ gencFilePath); result = runCommand(cmd); - uprv_free(cmd); if (result != 0) { fprintf(stderr, "Error creating with assembly code. Failed command: %s\n", cmd); return result; } + uprv_free(cmd); return pkg_generateLibraryFile(targetDir, mode, tempObjectFile); } diff -urN icu.old/source/tools/toolutil/filetools.cpp icu/source/tools/toolutil/filetools.cpp --- icu.old/source/tools/toolutil/filetools.cpp 2017-02-01 01:21:30.000000000 +0530 +++ icu/source/tools/toolutil/filetools.cpp 2018-09-23 16:09:47.949491516 +0530 @@ -64,6 +64,7 @@ newpath.append(dirEntry->d_name, -1, status); if (U_FAILURE(status)) { fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, u_errorName(status)); + free(pDir); return FALSE; };