From 482e90080cc73647ee52926f1b8bc52a3d46cc93 Mon Sep 17 00:00:00 2001 From: "Steven R. Loomis" Date: Thu, 11 Sep 2014 22:47:47 +0000 Subject: [PATCH] ICU-11131 re-checking in due to conflicts with r36481.. X-SVN-Rev: 36483 --- icu4c/source/i18n/smpdtfmt.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/icu4c/source/i18n/smpdtfmt.cpp b/icu4c/source/i18n/smpdtfmt.cpp index 901664115cc..8e67b69f417 100644 --- a/icu4c/source/i18n/smpdtfmt.cpp +++ b/icu4c/source/i18n/smpdtfmt.cpp @@ -58,6 +58,7 @@ #include "uassert.h" #include "cmemory.h" #include "umutex.h" +#include "mutex.h" #include #include "smpdtfst.h" @@ -1072,18 +1073,21 @@ SimpleDateFormat::initNumberFormatters(const Locale &locale,UErrorCode &status) if ( fDateOverride.isBogus() && fTimeOverride.isBogus() ) { return; } - umtx_lock(&LOCK); - if (fNumberFormatters == NULL) { + + { + UMutex lock(&LOCK); + if (fNumberFormatters == NULL) { fNumberFormatters = (NumberFormat**)uprv_malloc(UDAT_FIELD_COUNT * sizeof(NumberFormat*)); if (fNumberFormatters) { - for (int32_t i = 0; i < UDAT_FIELD_COUNT; i++) { - fNumberFormatters[i] = fNumberFormat; - } + for (int32_t i = 0; i < UDAT_FIELD_COUNT; i++) { + fNumberFormatters[i] = fNumberFormat; + } } else { - status = U_MEMORY_ALLOCATION_ERROR; + status = U_MEMORY_ALLOCATION_ERROR; } + } + // exit mutex } - umtx_unlock(&LOCK); if (U_FAILURE(status)) { return; -- 2.40.0