]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/dtitvfmt.cpp
ICU-66108.tar.gz
[apple/icu.git] / icuSources / i18n / dtitvfmt.cpp
index ba6001f5fe30413bdb4c92f2b7538a92864709bf..7a4082b5b38641a57f9853d003de9c4d8e1d75d3 100644 (file)
@@ -84,10 +84,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateIntervalFormat)
 // Mutex, protects access to fDateFormat, fFromCalendar and fToCalendar.
 //        Needed because these data members are modified by const methods of DateIntervalFormat.
 
-static UMutex *gFormatterMutex() {
-    static UMutex *m = STATIC_NEW(UMutex);
-    return m;
-}
+static UMutex gFormatterMutex;
 
 DateIntervalFormat* U_EXPORT2
 DateIntervalFormat::createInstance(const UnicodeString& skeleton,
@@ -177,9 +174,9 @@ DateIntervalFormat::operator=(const DateIntervalFormat& itvfmt) {
         delete fTimePattern;
         delete fDateTimeFormat;
         {
-            Mutex lock(gFormatterMutex());
+            Mutex lock(&gFormatterMutex);
             if ( itvfmt.fDateFormat ) {
-                fDateFormat = (SimpleDateFormat*)itvfmt.fDateFormat->clone();
+                fDateFormat = itvfmt.fDateFormat->clone();
             } else {
                 fDateFormat = NULL;
             }
@@ -226,8 +223,8 @@ DateIntervalFormat::~DateIntervalFormat() {
 }
 
 
-Format*
-DateIntervalFormat::clone(void) const {
+DateIntervalFormat*
+DateIntervalFormat::clone() const {
     return new DateIntervalFormat(*this);
 }
 
@@ -241,7 +238,7 @@ DateIntervalFormat::operator==(const Format& other) const {
     if ((fInfo != fmt->fInfo) && (fInfo == NULL || fmt->fInfo == NULL)) {return FALSE;}
     if (fInfo && fmt->fInfo && (*fInfo != *fmt->fInfo )) {return FALSE;}
     {
-        Mutex lock(gFormatterMutex());
+        Mutex lock(&gFormatterMutex);
         if (fDateFormat != fmt->fDateFormat && (fDateFormat == NULL || fmt->fDateFormat == NULL)) {return FALSE;}
         if (fDateFormat && fmt->fDateFormat && (*fDateFormat != *fmt->fDateFormat)) {return FALSE;}
     }
@@ -305,7 +302,7 @@ DateIntervalFormat::format(const DateInterval* dtInterval,
     handler.setAcceptFirstOnly(TRUE);
     int8_t ignore;
 
-    Mutex lock(gFormatterMutex());
+    Mutex lock(&gFormatterMutex);
     return formatIntervalImpl(*dtInterval, appendTo, ignore, handler, status);
 }
 
@@ -322,7 +319,7 @@ FormattedDateInterval DateIntervalFormat::formatToValue(
     auto handler = result->getHandler(status);
     handler.setCategory(UFIELD_CATEGORY_DATE);
     {
-        Mutex lock(gFormatterMutex());
+        Mutex lock(&gFormatterMutex);
         formatIntervalImpl(dtInterval, string, firstIndex, handler, status);
     }
     handler.getError(status);
@@ -354,7 +351,7 @@ DateIntervalFormat::format(Calendar& fromCalendar,
     handler.setAcceptFirstOnly(TRUE);
     int8_t ignore;
 
-    Mutex lock(gFormatterMutex());
+    Mutex lock(&gFormatterMutex);
     return formatImpl(fromCalendar, toCalendar, appendTo, ignore, handler, status);
 }
 
@@ -372,7 +369,7 @@ FormattedDateInterval DateIntervalFormat::formatToValue(
     auto handler = result->getHandler(status);
     handler.setCategory(UFIELD_CATEGORY_DATE);
     {
-        Mutex lock(gFormatterMutex());
+        Mutex lock(&gFormatterMutex);
         formatImpl(fromCalendar, toCalendar, string, firstIndex, handler, status);
     }
     handler.getError(status);
@@ -651,7 +648,7 @@ const TimeZone&
 DateIntervalFormat::getTimeZone() const
 {
     if (fDateFormat != NULL) {
-        Mutex lock(gFormatterMutex());
+        Mutex lock(&gFormatterMutex);
         return fDateFormat->getTimeZone();
     }
     // If fDateFormat is NULL (unexpected), create default timezone.
@@ -1548,7 +1545,7 @@ DateIntervalFormat::fallbackFormat(Calendar& fromCalendar,
 
     UBool formatDatePlusTimeRange = (fromToOnSameDay && fDatePattern && fTimePattern);
     if (formatDatePlusTimeRange) {
-        SimpleFormatter sf(*fDateTimeFormat, 2, 2, status);
+        SimpleFormatter sf(*fDateTimeFormat, 2, 2, TRUE, status);
         if (U_FAILURE(status)) {
             return appendTo;
         }