diff options
author | chibash <chiba@javassist.org> | 2013-12-02 20:05:24 +0900 |
---|---|---|
committer | Scott Marlow <smarlow@redhat.com> | 2013-12-02 10:12:27 -0500 |
commit | 7b73bcb55349356b3819c732a18d8a20bf5073d6 (patch) | |
tree | 712135e21a0a1b262fe0a8b530059683a30156a1 | |
parent | bf5722a70048db339334b23793465c299922785b (diff) | |
download | javassist-7b73bcb55349356b3819c732a18d8a20bf5073d6.tar.gz javassist-7b73bcb55349356b3819c732a18d8a20bf5073d6.zip |
fixed JASSIST-211
-rw-r--r-- | Readme.html | 2 | ||||
-rw-r--r-- | src/main/javassist/compiler/CodeGen.java | 2 | ||||
-rw-r--r-- | src/test/javassist/JvstTest4.java | 18 |
3 files changed, 20 insertions, 2 deletions
diff --git a/Readme.html b/Readme.html index 5066e134..251e0e95 100644 --- a/Readme.html +++ b/Readme.html @@ -283,7 +283,7 @@ see javassist.Dump. <p>-version 3.19 <ul> -<li>JIRA JASSIST-158, 205, 206, 207, 212, 216. +<li>JIRA JASSIST-158, 205, 206, 207, 211, 212, 216. </ul> </p> diff --git a/src/main/javassist/compiler/CodeGen.java b/src/main/javassist/compiler/CodeGen.java index bf61a2b1..bbcce895 100644 --- a/src/main/javassist/compiler/CodeGen.java +++ b/src/main/javassist/compiler/CodeGen.java @@ -434,7 +434,7 @@ public abstract class CodeGen extends Visitor implements Opcode, TokenId { if (notDo) bytecode.write16bit(pc, pc3 - pc + 1); - boolean alwaysBranch = compileBooleanExpr(true, expr); + boolean alwaysBranch = compileBooleanExpr(true, expr) && breakList.size() == 0; bytecode.addIndex(pc2 - bytecode.currentPc() + 1); patchGoto(breakList, bytecode.currentPc()); diff --git a/src/test/javassist/JvstTest4.java b/src/test/javassist/JvstTest4.java index df4533bb..f1aca09e 100644 --- a/src/test/javassist/JvstTest4.java +++ b/src/test/javassist/JvstTest4.java @@ -938,4 +938,22 @@ public class JvstTest4 extends JvstTestRoot { cc.writeFile(); Object obj = make(cc.getName()); } + + public void testWhileTrueKO() throws Exception { + final ClassPool pool = ClassPool.getDefault(); + final CtClass cc = pool.makeClass("test4.TestWhileTrueKO"); + String source = "public void testWhile() { while(true) { break; } }"; + cc.addMethod(CtMethod.make(source, cc)); + cc.writeFile(); + make(cc.getName()); + } + + public void testWhileTrueOK() throws Exception { + final ClassPool pool = ClassPool.getDefault(); + final CtClass cc = pool.makeClass("test4.TestWhileTrueOK"); + String source = "public void testWhile() { while(0==0) { break; }}"; + cc.addMethod(CtMethod.make(source, cc)); + cc.writeFile(); + make(cc.getName()); + } } |