From 1eb0ed2fad659a23b837ea7ccbed661cf1b31aff Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Mon, 5 Aug 2024 18:50:17 +0000 Subject: [PATCH] ICU-22818 Fix memory leak during error in messageformat2_data_model.cpp See #3077 --- icu4c/source/i18n/messageformat2_data_model.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/icu4c/source/i18n/messageformat2_data_model.cpp b/icu4c/source/i18n/messageformat2_data_model.cpp index 8255de01af06..a37ba4cf44ec 100644 --- a/icu4c/source/i18n/messageformat2_data_model.cpp +++ b/icu4c/source/i18n/messageformat2_data_model.cpp @@ -1091,13 +1091,13 @@ MFDataModel::MFDataModel(const MFDataModel::Builder& builder, UErrorCode& errorC U_ASSERT(builder.selectors != nullptr); int32_t numVariants = builder.variants->size(); int32_t numSelectors = builder.selectors->size(); - Variant* variants = copyVectorToArray(*builder.variants, errorCode); - Expression* selectors = copyVectorToArray(*builder.selectors, errorCode); + LocalArray variants(copyVectorToArray(*builder.variants, errorCode), errorCode); + LocalArray selectors(copyVectorToArray(*builder.selectors, errorCode), errorCode); if (U_FAILURE(errorCode)) { bogus = true; return; } - body.emplace(Matcher(selectors, numSelectors, variants, numVariants)); + body.emplace(Matcher(selectors.orphan(), numSelectors, variants.orphan(), numVariants)); } U_ASSERT(builder.bindings != nullptr);