diff options
Diffstat (limited to 'java/util/Calendar.java')
-rw-r--r-- | java/util/Calendar.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/java/util/Calendar.java b/java/util/Calendar.java index 3e4fd8a34..c426eb5e5 100644 --- a/java/util/Calendar.java +++ b/java/util/Calendar.java @@ -951,10 +951,19 @@ public abstract class Calendar */ 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(); + } } /** |