From f48944e06297bb5b3ac4ebfa122d3ebceccab51d Mon Sep 17 00:00:00 2001 From: Makoto Kato Date: Fri, 10 May 2024 11:09:03 +0900 Subject: [PATCH] ICU-21809 Possible memory leak of tempTable.resFlags --- icu4c/source/common/uresdata.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/icu4c/source/common/uresdata.cpp b/icu4c/source/common/uresdata.cpp index c38e75c65b2..c716dd9b0f0 100644 --- a/icu4c/source/common/uresdata.cpp +++ b/icu4c/source/common/uresdata.cpp @@ -1457,6 +1457,9 @@ ures_swap(const UDataSwapper *ds, outBundle+keysBottom, pErrorCode); if(U_FAILURE(*pErrorCode)) { udata_printError(ds, "ures_swap().udata_swapInvStringBlock(keys[%d]) failed\n", 4*(keysTop-keysBottom)); + if(tempTable.resFlags!=stackResFlags) { + uprv_free(tempTable.resFlags); + } return 0; } @@ -1465,6 +1468,9 @@ ures_swap(const UDataSwapper *ds, ds->swapArray16(ds, inBundle+keysTop, (resBottom-keysTop)*4, outBundle+keysTop, pErrorCode); if(U_FAILURE(*pErrorCode)) { udata_printError(ds, "ures_swap().swapArray16(16-bit units[%d]) failed\n", 2*(resBottom-keysTop)); + if(tempTable.resFlags!=stackResFlags) { + uprv_free(tempTable.resFlags); + } return 0; } }