langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java
changeset 18672 1d6d1be0a94f
parent 18010 604faee85350
child 18912 e25cd61d8e59
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java	Mon Jul 01 16:36:08 2013 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java	Tue Jul 02 22:49:40 2013 +0100
@@ -1945,10 +1945,17 @@
                 }
             }
 
+            /*  The analysis of each catch should be independent.
+             *  Each one should have the same initial values of inits and
+             *  uninits.
+             */
+            final Bits initsCatchPrev = new Bits(initsTry);
+            final Bits uninitsCatchPrev = new Bits(uninitsTry);
+
             for (List<JCCatch> l = tree.catchers; l.nonEmpty(); l = l.tail) {
                 JCVariableDecl param = l.head.param;
-                inits.assign(initsTry);
-                uninits.assign(uninitsTry);
+                inits.assign(initsCatchPrev);
+                uninits.assign(uninitsCatchPrev);
                 scan(param);
                 inits.incl(param.sym.adr);
                 uninits.excl(param.sym.adr);