]> granicus.if.org Git - icu/commitdiff
ICU-11131 re-checking in due to conflicts with r36481..
authorSteven R. Loomis <srl@icu-project.org>
Thu, 11 Sep 2014 22:47:47 +0000 (22:47 +0000)
committerSteven R. Loomis <srl@icu-project.org>
Thu, 11 Sep 2014 22:47:47 +0000 (22:47 +0000)
X-SVN-Rev: 36483

icu4c/source/i18n/smpdtfmt.cpp

index 901664115cc773d2b57651e90f2de01a8c12871c..8e67b69f417da7403f4cbcf4c35999d41b01aff2 100644 (file)
@@ -58,6 +58,7 @@
 #include "uassert.h"
 #include "cmemory.h"
 #include "umutex.h"
+#include "mutex.h"
 #include <float.h>
 #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;