A DESCRIPTION OF THE PROBLEM :
GregorianCalendar.roll(Calendar.DAY_OF_WEEK, true) incorrectly modifies the year field when rolling from Saturday to Sunday across year boundaries, violating the documented behavior that roll() should not change larger fields.
---------- BEGIN SOURCE ----------
import java.util.Calendar;
import java.util.GregorianCalendar;
public class RollTest {
public static void main(String args[]) {
Calendar cal = new GregorianCalendar();
cal.set(2020, Calendar.JANUARY, 4);
System.out.println("Before roll: " + cal.getTime() + ", Year: " + cal.get(Calendar.YEAR));
cal.roll(Calendar.DAY_OF_WEEK, 1);
System.out.println("After roll: " + cal.getTime() + ", Year: " + cal.get(Calendar.YEAR));
}
}
---------- END SOURCE ----------