aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist/compiler/MemberCodeGen.java
diff options
context:
space:
mode:
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-08-17 13:59:49 +0000
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-08-17 13:59:49 +0000
commit421e4885eb233dc616bed0b48eec678f5f0d41c4 (patch)
tree7d5987c44f9c5cbd4e1a6821e3a068f5fc76afca /src/main/javassist/compiler/MemberCodeGen.java
parentd96924c601912c7df55e378806a126850a798eaa (diff)
downloadjavassist-421e4885eb233dc616bed0b48eec678f5f0d41c4.tar.gz
javassist-421e4885eb233dc616bed0b48eec678f5f0d41c4.zip
fixed a bug in the compiler, which could not compile a try statement
correctly. git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@33 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
Diffstat (limited to 'src/main/javassist/compiler/MemberCodeGen.java')
-rw-r--r--src/main/javassist/compiler/MemberCodeGen.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/main/javassist/compiler/MemberCodeGen.java b/src/main/javassist/compiler/MemberCodeGen.java
index 97a12341..612b6641 100644
--- a/src/main/javassist/compiler/MemberCodeGen.java
+++ b/src/main/javassist/compiler/MemberCodeGen.java
@@ -72,6 +72,8 @@ public class MemberCodeGen extends CodeGen {
int start = bytecode.currentPc();
body.accept(this);
int end = bytecode.currentPc();
+ if (start == end)
+ throw new CompileError("empty try block");
bytecode.addOpcode(Opcode.GOTO);
int pc = bytecode.currentPc();
@@ -92,10 +94,10 @@ public class MemberCodeGen extends CodeGen {
decl.setClassName(javaToJvmName(type.getName()));
bytecode.addExceptionHandler(start, end, bytecode.currentPc(),
type);
- if (block != null) {
- bytecode.addAstore(var);
+ bytecode.growStack(1);
+ bytecode.addAstore(var);
+ if (block != null)
block.accept(this);
- }
bytecode.addOpcode(Opcode.GOTO);
bytecode.addIndex(pc - bytecode.currentPc());