SimpleDateFormat.java (parse): Don't use class calendar field.
authorGuilhem Lavaux <guilhem@kaffe.org>
Thu, 25 Sep 2003 17:25:15 +0000 (17:25 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Thu, 25 Sep 2003 17:25:15 +0000 (17:25 +0000)
2003-09-25  Guilhem Lavaux  <guilhem@kaffe.org>

* java/text/SimpleDateFormat.java (parse): Don't use class calendar
field.

From-SVN: r71782

libjava/ChangeLog
libjava/java/text/SimpleDateFormat.java

index 6271be408a4d0c6d08c859a13516116dbf2f2347..873661ac51beee81eb52794bc597a3997fd3b051 100644 (file)
@@ -1,3 +1,8 @@
+2003-09-25  Guilhem Lavaux  <guilhem@kaffe.org>
+
+       * java/text/SimpleDateFormat.java (parse): Don't use class calendar
+       field.
+
 2003-09-25  Michael Koch  <konqueror@gmx.de>
 
        * gnu/java/nio/SelectorImpl.java
index b43c6cd86d440de15821f68752c80792ba1f5988..f41a27bbc4d0bb3af56516831431725bfbd25e93 100644 (file)
@@ -547,8 +547,9 @@ public class SimpleDateFormat extends DateFormat
   {
     int fmt_index = 0;
     int fmt_max = pattern.length();
+    Calendar loc_calendar = (Calendar)calendar.clone();
 
-    calendar.clear();
+    loc_calendar.clear();
     boolean saw_timezone = false;
     int quote_start = -1;
     boolean is2DigitYear = false;
@@ -696,8 +697,8 @@ public class SimpleDateFormat extends DateFormat
                    found_zone = true;
                    saw_timezone = true;
                    TimeZone tz = TimeZone.getTimeZone (strings[0]);
-                   calendar.setTimeZone (tz);
-                   calendar.set (Calendar.ZONE_OFFSET, tz.getRawOffset ());
+                   loc_calendar.setTimeZone (tz);
+                   loc_calendar.set (Calendar.ZONE_OFFSET, tz.getRawOffset ());
                    offset = 0;
                    if (k > 2 && tz instanceof SimpleTimeZone)
                      {
@@ -764,17 +765,17 @@ public class SimpleDateFormat extends DateFormat
          }
 
        // Assign the value and move on.
-       calendar.set(calendar_field, value);
+       loc_calendar.set(calendar_field, value);
       }
     
     if (is2DigitYear)
       {
        // Apply the 80-20 heuristic to dermine the full year based on 
        // defaultCenturyStart. 
-       int year = defaultCentury + calendar.get(Calendar.YEAR);
-       calendar.set(Calendar.YEAR, year);
-       if (calendar.getTime().compareTo(defaultCenturyStart) < 0)
-         calendar.set(Calendar.YEAR, year + 100);      
+       int year = defaultCentury + loc_calendar.get(Calendar.YEAR);
+       loc_calendar.set(Calendar.YEAR, year);
+       if (loc_calendar.getTime().compareTo(defaultCenturyStart) < 0)
+         loc_calendar.set(Calendar.YEAR, year + 100);      
       }
 
     try
@@ -783,10 +784,10 @@ public class SimpleDateFormat extends DateFormat
          {
            // Use the real rules to determine whether or not this
            // particular time is in daylight savings.
-           calendar.clear (Calendar.DST_OFFSET);
-           calendar.clear (Calendar.ZONE_OFFSET);
+           loc_calendar.clear (Calendar.DST_OFFSET);
+           loc_calendar.clear (Calendar.ZONE_OFFSET);
          }
-        return calendar.getTime();
+        return loc_calendar.getTime();
       }
     catch (IllegalArgumentException x)
       {