summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2007-04-13 08:12:36 +0000
committerGary Benson <gbenson@redhat.com>2007-04-13 08:12:36 +0000
commitdc44e9be380833622a77e87fae946917528bf036 (patch)
treed6835afaf9fac3d8dcaf6c792d0f2153f23d3423
parent2ab6e41c2c1bff5bd58d0996ff31fa7258b3aaa0 (diff)
downloadclasspath-dc44e9be380833622a77e87fae946917528bf036.tar.gz
2007-04-13 Gary Benson <gbenson@redhat.com>
* java/util/Calendar.java (clear()): Zero cleared fields rather than using a default. (clear(int)): Likewise. * java/util/GregorianCalendar.java (setDefaultFields): New method. (computeTime): Call setDefaultFields if fields are not set.
-rw-r--r--ChangeLog9
-rw-r--r--java/util/Calendar.java19
-rw-r--r--java/util/GregorianCalendar.java16
3 files changed, 30 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 316b40ba5..086bd67bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
2007-04-13 Gary Benson <gbenson@redhat.com>
* java/util/Calendar.java
+ (clear()): Zero cleared fields rather than using a default.
+ (clear(int)): Likewise.
+ * java/util/GregorianCalendar.java
+ (setDefaultFields): New method.
+ (computeTime): Call setDefaultFields if fields are not set.
+
+2007-04-13 Gary Benson <gbenson@redhat.com>
+
+ * java/util/Calendar.java
(explicitDSTOffset): Remove.
(set(int, int)): Remove explicitDSTOffset stuff.
(set(int, int, int)): Likewise.
diff --git a/java/util/Calendar.java b/java/util/Calendar.java
index d3012153e..5a2b91519 100644
--- a/java/util/Calendar.java
+++ b/java/util/Calendar.java
@@ -911,15 +911,11 @@ public abstract class Calendar
{
isTimeSet = false;
areFieldsSet = false;
- int zoneOffs = zone.getRawOffset();
- int[] tempFields =
- {
- 1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0,
- 0, 0, zoneOffs, 0
- };
- fields = tempFields;
for (int i = 0; i < FIELD_COUNT; i++)
- isSet[i] = false;
+ {
+ fields[i] = 0;
+ isSet[i] = false;
+ }
}
/**
@@ -931,16 +927,11 @@ public abstract class Calendar
*/
public final void clear(int field)
{
- int[] tempFields =
- {
- 1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0,
- 0, 0, zone.getRawOffset(), 0
- };
complete();
isTimeSet = false;
areFieldsSet = false;
isSet[field] = false;
- fields[field] = tempFields[field];
+ fields[field] = 0;
}
/**
diff --git a/java/util/GregorianCalendar.java b/java/util/GregorianCalendar.java
index 28c72b3c2..47be31154 100644
--- a/java/util/GregorianCalendar.java
+++ b/java/util/GregorianCalendar.java
@@ -496,6 +496,19 @@ public class GregorianCalendar extends Calendar
}
/**
+ * Set all fields to their default values.
+ */
+ private void setDefaultFields()
+ {
+ int[] defaults = {
+ AD, 1970, JANUARY, 0, 0, 1, 0, -1, 1, AM, 0, 0, 0, 0, 0, 0, 0
+ };
+ System.arraycopy(defaults, 0, fields, 0, FIELD_COUNT);
+ fields[DAY_OF_WEEK] = getFirstDayOfWeek();
+ areFieldsSet = true;
+ }
+
+ /**
* Converts the time field values (<code>fields</code>) to
* milliseconds since the epoch UTC (<code>time</code>).
*
@@ -504,6 +517,9 @@ public class GregorianCalendar extends Calendar
*/
protected synchronized void computeTime()
{
+ if (!areFieldsSet)
+ setDefaultFields();
+
int millisInDay = 0;
int era = fields[ERA];
int year = fields[YEAR];