Fix NPE when decompiling constructor #654
parent
7c8e64da81
commit
a74a9d7d25
Binary file not shown.
Binary file not shown.
@ -0,0 +1,50 @@ |
|||||||
|
package pkg; |
||||||
|
|
||||||
|
public class TestMissingConstructorCallBad { |
||||||
|
private TestMissingConstructorCallBad() { |
||||||
|
System.out.println("Nobody will see what we do here!");// 14 15 16 |
||||||
|
this((Object)null);// 19 20 |
||||||
|
}// 21 |
||||||
|
|
||||||
|
public static void main(String... var0) { |
||||||
|
try { |
||||||
|
new TestMissingConstructorCallBad(); |
||||||
|
} catch (Throwable var2) {// 37 |
||||||
|
; |
||||||
|
} |
||||||
|
|
||||||
|
}// 39 |
||||||
|
} |
||||||
|
|
||||||
|
class 'pkg/TestMissingConstructorCallBad' { |
||||||
|
method '<init> ()V' { |
||||||
|
0 4 |
||||||
|
3 4 |
||||||
|
5 4 |
||||||
|
9 5 |
||||||
|
a 5 |
||||||
|
d 6 |
||||||
|
} |
||||||
|
|
||||||
|
method 'main ([Ljava/lang/String;)V' { |
||||||
|
b 11 |
||||||
|
c 15 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Lines mapping: |
||||||
|
14 <-> 5 |
||||||
|
15 <-> 5 |
||||||
|
16 <-> 5 |
||||||
|
19 <-> 6 |
||||||
|
20 <-> 6 |
||||||
|
21 <-> 7 |
||||||
|
37 <-> 12 |
||||||
|
39 <-> 16 |
||||||
|
Not mapped: |
||||||
|
18 |
||||||
|
28 |
||||||
|
29 |
||||||
|
30 |
||||||
|
31 |
||||||
|
33 |
@ -0,0 +1,60 @@ |
|||||||
|
package pkg; |
||||||
|
|
||||||
|
public class TestMissingConstructorCallGood { |
||||||
|
private TestMissingConstructorCallGood(Object var1) { |
||||||
|
}// 16 |
||||||
|
|
||||||
|
private TestMissingConstructorCallGood() { |
||||||
|
System.out.println("Nobody will see what we do here!");// 22 23 24 |
||||||
|
this((Object)null);// 27 28 |
||||||
|
}// 29 |
||||||
|
|
||||||
|
public static void main(String... var0) { |
||||||
|
try { |
||||||
|
new TestMissingConstructorCallGood(); |
||||||
|
} catch (Throwable var2) {// 45 |
||||||
|
; |
||||||
|
} |
||||||
|
|
||||||
|
}// 47 |
||||||
|
} |
||||||
|
|
||||||
|
class 'pkg/TestMissingConstructorCallGood' { |
||||||
|
method '<init> (Ljava/lang/Object;)V' { |
||||||
|
4 4 |
||||||
|
} |
||||||
|
|
||||||
|
method '<init> ()V' { |
||||||
|
0 7 |
||||||
|
3 7 |
||||||
|
5 7 |
||||||
|
9 8 |
||||||
|
a 8 |
||||||
|
d 9 |
||||||
|
} |
||||||
|
|
||||||
|
method 'main ([Ljava/lang/String;)V' { |
||||||
|
b 14 |
||||||
|
c 18 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Lines mapping: |
||||||
|
16 <-> 5 |
||||||
|
22 <-> 8 |
||||||
|
23 <-> 8 |
||||||
|
24 <-> 8 |
||||||
|
27 <-> 9 |
||||||
|
28 <-> 9 |
||||||
|
29 <-> 10 |
||||||
|
45 <-> 15 |
||||||
|
47 <-> 19 |
||||||
|
Not mapped: |
||||||
|
14 |
||||||
|
15 |
||||||
|
26 |
||||||
|
36 |
||||||
|
37 |
||||||
|
38 |
||||||
|
39 |
||||||
|
41 |
@ -0,0 +1,42 @@ |
|||||||
|
/** |
||||||
|
* This code can be assembled with <a href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a> |
||||||
|
* using <code>asmtools jasm -g *.jasm</code> command line. |
||||||
|
*/ |
||||||
|
package pkg; |
||||||
|
|
||||||
|
super public class TestMissingConstructorCallBad |
||||||
|
version 52:0 |
||||||
|
{ |
||||||
|
|
||||||
|
private Method "<init>":"()V" |
||||||
|
stack 2 locals 1 |
||||||
|
{ |
||||||
|
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;"; |
||||||
|
ldc String "Nobody will see what we do here!"; |
||||||
|
invokevirtual Method java/io/PrintStream.println:"(Ljava/lang/String;)V"; |
||||||
|
|
||||||
|
aload_0; |
||||||
|
aconst_null; |
||||||
|
invokespecial Method "<init>":"(Ljava/lang/Object;)V"; |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
public static varargs Method main:"([Ljava/lang/String;)V" |
||||||
|
stack 2 locals 2 |
||||||
|
{ |
||||||
|
try t0; |
||||||
|
new class TestMissingConstructorCallBad; |
||||||
|
dup; |
||||||
|
invokespecial Method "<init>":"()V"; |
||||||
|
pop; |
||||||
|
endtry t0; |
||||||
|
goto L12; |
||||||
|
catch t0 java/lang/Throwable; |
||||||
|
stack_frame_type stack1; |
||||||
|
stack_map class java/lang/Throwable; |
||||||
|
astore_1; |
||||||
|
L12: stack_frame_type same; |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
} // end Class TestMissingConstructorCallBad |
@ -0,0 +1,50 @@ |
|||||||
|
/** |
||||||
|
* This code can be assembled with <a href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a> |
||||||
|
* using <code>asmtools jasm -g *.jasm</code> command line. |
||||||
|
*/ |
||||||
|
package pkg; |
||||||
|
|
||||||
|
super public class TestMissingConstructorCallGood |
||||||
|
version 52:0 |
||||||
|
{ |
||||||
|
|
||||||
|
private Method "<init>":"(Ljava/lang/Object;)V" |
||||||
|
stack 1 locals 2 |
||||||
|
{ |
||||||
|
aload_0; |
||||||
|
invokespecial Method java/lang/Object."<init>":"()V"; |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
private Method "<init>":"()V" |
||||||
|
stack 2 locals 1 |
||||||
|
{ |
||||||
|
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;"; |
||||||
|
ldc String "Nobody will see what we do here!"; |
||||||
|
invokevirtual Method java/io/PrintStream.println:"(Ljava/lang/String;)V"; |
||||||
|
|
||||||
|
aload_0; |
||||||
|
aconst_null; |
||||||
|
invokespecial Method "<init>":"(Ljava/lang/Object;)V"; |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
public static varargs Method main:"([Ljava/lang/String;)V" |
||||||
|
stack 2 locals 2 |
||||||
|
{ |
||||||
|
try t0; |
||||||
|
new class TestMissingConstructorCallGood; |
||||||
|
dup; |
||||||
|
invokespecial Method "<init>":"()V"; |
||||||
|
pop; |
||||||
|
endtry t0; |
||||||
|
goto L12; |
||||||
|
catch t0 java/lang/Throwable; |
||||||
|
stack_frame_type stack1; |
||||||
|
stack_map class java/lang/Throwable; |
||||||
|
astore_1; |
||||||
|
L12: stack_frame_type same; |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
} // end Class TestMissingConstructorCallGood |
Loading…
Reference in new issue