Petr Machata 81ac290
# Patch based on fix in JDK8 tree by Yuka Kamiya from Oracle:
Petr Machata 81ac290
# http://hg.openjdk.java.net/jdk8/tl/jdk/rev/f114bddac6d6
Petr Machata 81ac290
Petr Machata 81ac290
diff -up ./sun/tools/javazic/Mappings.java.sav ./sun/tools/javazic/Mappings.java
Petr Machata 81ac290
--- ./sun/tools/javazic/Mappings.java.sav	2011-11-03 16:31:53.000000000 -0400
Petr Machata 81ac290
+++ ./sun/tools/javazic/Mappings.java	2011-11-03 16:41:44.000000000 -0400
Petr Machata 81ac290
@@ -77,15 +77,17 @@ class Mappings {
Petr Machata 81ac290
 	    int rawOffset = zone.get(zone.size()-1).getGmtOffset();
Petr Machata 81ac290
 	    // If the GMT offset of this Zone will change in some
Petr Machata 81ac290
 	    // future time, this Zone is added to the exclude list.
Petr Machata 81ac290
-	    if (zone.size() > 1) {
Petr Machata 81ac290
-		ZoneRec zrec = zone.get(zone.size()-2);
Petr Machata 81ac290
+	    boolean isExcluded = false;
Petr Machata 81ac290
+	    for (int i = 0; i < zone.size(); i++) {
Petr Machata 81ac290
+		ZoneRec zrec = zone.get(i);
Petr Machata 81ac290
 		if ((zrec.getGmtOffset() != rawOffset)
Petr Machata 81ac290
 		    && (zrec.getUntilTime(0) > Time.getCurrentTime())) {
Petr Machata 81ac290
 		    if (excludeList == null) {
Petr Machata 81ac290
 			excludeList = new ArrayList<String>();
Petr Machata 81ac290
 		    }
Petr Machata 81ac290
 		    excludeList.add(zone.getName());
Petr Machata 81ac290
-		    continue;
Petr Machata 81ac290
+		    isExcluded = true;
Petr Machata 81ac290
+		    break;
Petr Machata 81ac290
 		}
Petr Machata 81ac290
 	    }
Petr Machata 81ac290
 
Petr Machata 81ac290
@@ -101,9 +103,13 @@ class Mappings {
Petr Machata 81ac290
 		rawOffsetsIndex.add(i, rawOffset);
Petr Machata 81ac290
 
Petr Machata 81ac290
 		Set<String> perRawOffset = new TreeSet<String>();
Petr Machata 81ac290
+		if (!isExcluded) {
Petr Machata 81ac290
+		    perRawOffset = new TreeSet<String>();
Petr Machata 81ac290
+		}
Petr Machata 81ac290
+
Petr Machata 81ac290
 		perRawOffset.add(zonename);
Petr Machata 81ac290
 		rawOffsetsIndexTable.add(i, perRawOffset);
Petr Machata 81ac290
-	    } else {
Petr Machata 81ac290
+	    } else if (!isExcluded) {
Petr Machata 81ac290
 		int i = rawOffsetsIndex.indexOf(new Integer(rawOffset));
Petr Machata 81ac290
 		Set<String> perRawOffset = rawOffsetsIndexTable.get(i);
Petr Machata 81ac290
 		perRawOffset.add(zonename);