Please review this PR which addresses an edge case for `GregorianCalendar.roll(int, int)` when the rolled amount would cause the hour to remain the same as before the call. After this change, the expected hour is returned. That is, rolling a full cycle for HOUR (12 hours) and HOUR_OF_DAY (24 hours) should keep the hour the same as before the call.
For example, a calendar with HOUR_OF_DAY == 15, cal.roll(Calendar.HOUR_OF_DAY, 23); cal.get(Calendar.HOUR_OF_DAY); // returns 14 cal.roll(Calendar.HOUR_OF_DAY, 24); // Incorrectly returns 16. A full cycle is expected to return the starting hour (15) cal.get(Calendar.HOUR_OF_DAY); cal.roll(Calendar.HOUR_OF_DAY, 25); cal.get(Calendar.HOUR_OF_DAY); // returns 16 ------------- Commit messages: - init Changes: https://git.openjdk.org/jdk/pull/27355/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27355&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8367901 Stats: 92 lines in 2 files changed: 89 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/27355.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27355/head:pull/27355 PR: https://git.openjdk.org/jdk/pull/27355
