--- old/make/src/classes/build/tools/tzdb/ZoneRulesBuilder.java 2014-12-28 03:30:11.512047816 +0300 +++ new/make/src/classes/build/tools/tzdb/ZoneRulesBuilder.java 2014-12-28 03:30:11.368047822 +0300 @@ -491,10 +491,10 @@ TZRule rule = new TZRule(year, month, dayOfMonthIndicator, dayOfWeek, time, timeEndOfDay, timeDefinition, savingAmountSecs); if (lastRule) { lastRuleList.add(rule); - maxLastRuleStartYear = Math.max(startYear, maxLastRuleStartYear); } else { ruleList.add(rule); } + maxLastRuleStartYear = Math.max(startYear, maxLastRuleStartYear); year++; } } --- old/test/ProblemList.txt 2014-12-28 03:30:12.024047795 +0300 +++ new/test/ProblemList.txt 2014-12-28 03:30:11.884047801 +0300 @@ -272,7 +272,4 @@ # Filed 6772009 java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java generic-all -# 8051641 -sun/util/calendar/zi/TestZoneInfo310.java generic-all - ############################################################################ --- old/test/sun/util/calendar/zi/Rule.java 2014-12-28 03:30:12.640047769 +0300 +++ new/test/sun/util/calendar/zi/Rule.java 2014-12-28 03:30:12.480047775 +0300 @@ -126,6 +126,14 @@ }); rules.clear(); for (int i = 0; i < n; i++) { + if (i != 0 && recs[i -1].getSave() == recs[i].getSave()) { + // we have two recs back to back with same saving for the same year. + if (recs[i].isLastRule()) { + continue; + } else if (recs[i - 1].isLastRule()) { + rules.remove(rules.size() - 1); + } + } rules.add(recs[i]); } return rules;