From 6de4472db045c59b1b847a5e1a69f6cd29f65926 Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Mon, 5 Aug 2024 19:33:13 -0700 Subject: [PATCH] ICU-22820 Fix memLeak during error in genrb Fix also ICU-22821 ICU-22822 --- icu4c/source/tools/genrb/wrtxml.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/icu4c/source/tools/genrb/wrtxml.cpp b/icu4c/source/tools/genrb/wrtxml.cpp index 1b525afd746..eba806117ab 100644 --- a/icu4c/source/tools/genrb/wrtxml.cpp +++ b/icu4c/source/tools/genrb/wrtxml.cpp @@ -639,6 +639,8 @@ string_write_xml(StringResource *res, const char* id, const char* /*language*/, buf = convertAndEscape(&buf, 0, &bufLen, res->getBuffer(), res->length(), status); if (U_FAILURE(*status)) { + uprv_free(buf); + uprv_free(sid); return; } @@ -671,6 +673,8 @@ alias_write_xml(AliasResource *res, const char* id, const char* /*language*/, UE buf = convertAndEscape(&buf, 0, &bufLen, res->getBuffer(), res->length(), status); if(U_FAILURE(*status)){ + uprv_free(buf); + uprv_free(sid); return; } write_utf8_file(out, UnicodeString(buf, bufLen, "UTF-8")); @@ -711,6 +715,7 @@ array_write_xml(ArrayResource *res, const char* id, const char* language, UError subId = nullptr; if(U_FAILURE(*status)){ + uprv_free(sid); return; } @@ -943,6 +948,7 @@ table_write_xml(TableResource *res, const char* id, const char* language, UBool res_write_xml(current, sid, language, false, status); if(U_FAILURE(*status)){ + uprv_free(sid); return; }