From 7b73bcb55349356b3819c732a18d8a20bf5073d6 Mon Sep 17 00:00:00 2001 From: chibash Date: Mon, 2 Dec 2013 20:05:24 +0900 Subject: fixed JASSIST-211 --- Readme.html | 2 +- src/main/javassist/compiler/CodeGen.java | 2 +- 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.

-version 3.19

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()); + } } -- cgit v1.2.3