Skip to content

Commit 5754002

Browse files
hengyunabcLeMikaelF
authored andcommitted
Fix UndeclaredThrowableTransformer.
1 parent 04e69bd commit 5754002

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

spring-core/src/main/java/org/springframework/cglib/transform/impl/UndeclaredThrowableTransformer.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,26 @@ public CodeEmitter begin_method(int access, final Signature sig, final Type[] ex
5656
}
5757
return new CodeEmitter(e) {
5858
private Block handler;
59-
/* init */ {
59+
private boolean isConstructor;
60+
private boolean fixedConstructorHandler;
61+
62+
{
63+
if (Constants.CONSTRUCTOR_NAME.equals(sig.getName())) {
64+
isConstructor = true;
65+
}
6066
handler = begin_block();
6167
}
68+
69+
@Override
70+
public void visitMethodInsn(int opcode, String owner, String name, String descriptor, boolean isInterface) {
71+
super.visitMethodInsn(opcode, owner, name, descriptor, isInterface);
72+
// fix try catch block start label in constructor. #189
73+
if (isConstructor && !fixedConstructorHandler && Constants.CONSTRUCTOR_NAME.equals(name)) {
74+
handler = begin_block();
75+
fixedConstructorHandler = true;
76+
}
77+
}
78+
6279
@Override
6380
public void visitMaxs(int maxStack, int maxLocals) {
6481
handler.end();

0 commit comments

Comments
 (0)