Hi again, This commit reorders Calendar.complete() and moves the setting of isTimeSet in order to match Sun's implementation.
Cheers, Gary
Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.9239.2.5 diff -u -r1.9239.2.5 ChangeLog --- ChangeLog 13 Apr 2007 10:48:41 -0000 1.9239.2.5 +++ ChangeLog 13 Apr 2007 11:46:29 -0000 @@ -1,3 +1,10 @@ +2007-04-13 Gary Benson <[EMAIL PROTECTED]> + + * java/util/Calendar.java + (complete): Reorder, and set isTimeSet. + * java/util/GregorianCalendar.java + (computeTime): Do not set isTimeSet. + 2007-04-13 Gary Benson <[EMAIL PROTECTED]> * java/util/Calendar.java Index: java/util/Calendar.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/Calendar.java,v retrieving revision 1.52.4.3 diff -u -r1.52.4.3 Calendar.java --- java/util/Calendar.java 13 Apr 2007 10:48:42 -0000 1.52.4.3 +++ java/util/Calendar.java 13 Apr 2007 11:46:29 -0000 @@ -951,10 +951,19 @@ */ protected void complete() { - if (! isTimeSet) - computeTime(); - if (! areFieldsSet) - computeFields(); + // computeFields() sets areFieldsSet, but computeTime() + // does not set isTimeSet. This seems odd, but it's what + // Sun's implementation does. + if (!isTimeSet) + { + computeTime(); + isTimeSet = true; + computeFields(); + } + else if (!areFieldsSet) + { + computeFields(); + } } /** Index: java/util/GregorianCalendar.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/GregorianCalendar.java,v retrieving revision 1.49.4.3 diff -u -r1.49.4.3 GregorianCalendar.java --- java/util/GregorianCalendar.java 13 Apr 2007 09:18:00 -0000 1.49.4.3 +++ java/util/GregorianCalendar.java 13 Apr 2007 11:46:29 -0000 @@ -723,8 +723,6 @@ - zone.getRawOffset()); time -= rawOffset + dstOffset; - - isTimeSet = true; } /**