2005-11-11 Lluis Sanchez Gual <lluis@novell.com>
[mono.git] / mcs / class / corlib / System / TimeZone.cs
index ff85afd6e8aa5ab6a899de3408d2a5acba349eba..16907de1b5f7508b81cbd4e2d632ceda4719d332 100644 (file)
@@ -228,24 +228,22 @@ namespace System
                                throw new ArgumentOutOfRangeException ("year", year +
                                        Locale.GetText (" is not in a range between 1 and 9999."));
 
-                       if (daylightCache [year] == null) {
-                               lock (daylightCache) {
-                                       if (daylightCache [year] == null) {
-                                               Int64[] data;
-                                               string[] names;
-
-                                               if (!GetTimeZoneData (year, out data, out names))
-                                                       throw new ArgumentException (Locale.GetText ("Can't get timezone data for " + year));
-
-                                               DaylightTime dlt = new DaylightTime (new DateTime (data[(int)TimeZoneData.DaylightSavingStartIdx]),
-                                                                                    new DateTime (data[(int)TimeZoneData.DaylightSavingEndIdx]),
-                                                                                    new TimeSpan (data[(int)TimeZoneData.AdditionalDaylightOffsetIdx]));
-                                               daylightCache.Add (year, dlt);
-                                       };
-                               };
+                       lock (daylightCache) {
+                               DaylightTime dlt = (DaylightTime) daylightCache [year];
+                               if (dlt == null) {
+                                       Int64[] data;
+                                       string[] names;
+
+                                       if (!GetTimeZoneData (year, out data, out names))
+                                               throw new ArgumentException (Locale.GetText ("Can't get timezone data for " + year));
+
+                                       dlt = new DaylightTime (new DateTime (data[(int)TimeZoneData.DaylightSavingStartIdx]),
+                                                                            new DateTime (data[(int)TimeZoneData.DaylightSavingEndIdx]),
+                                                                            new TimeSpan (data[(int)TimeZoneData.AdditionalDaylightOffsetIdx]));
+                                       daylightCache.Add (year, dlt);
+                               }
+                               return dlt;
                        }
-
-                       return (DaylightTime) daylightCache [year];
                }
 
                public override TimeSpan GetUtcOffset (DateTime time)