summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/BridgeFixer.java
diff options
context:
space:
mode:
authorGravatar jeff2014-09-24 20:32:19 -0400
committerGravatar jeff2014-09-24 20:32:19 -0400
commit064fe6a628f23f21eb2c8f584215f439e54cfaec (patch)
tree733f840aca8dca170e9403de51be256b24ed00b2 /src/cuchaz/enigma/analysis/BridgeFixer.java
parentHOW DO I WRITE SO MANY BUGS?!? (diff)
downloadenigma-fork-064fe6a628f23f21eb2c8f584215f439e54cfaec.tar.gz
enigma-fork-064fe6a628f23f21eb2c8f584215f439e54cfaec.tar.xz
enigma-fork-064fe6a628f23f21eb2c8f584215f439e54cfaec.zip
fixed in-jar detection for bridge-related methods
Diffstat (limited to 'src/cuchaz/enigma/analysis/BridgeFixer.java')
-rw-r--r--src/cuchaz/enigma/analysis/BridgeFixer.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/cuchaz/enigma/analysis/BridgeFixer.java b/src/cuchaz/enigma/analysis/BridgeFixer.java
index aeaf871..112b864 100644
--- a/src/cuchaz/enigma/analysis/BridgeFixer.java
+++ b/src/cuchaz/enigma/analysis/BridgeFixer.java
@@ -15,6 +15,8 @@ import javassist.CtMethod;
15import javassist.bytecode.ConstPool; 15import javassist.bytecode.ConstPool;
16import javassist.bytecode.Descriptor; 16import javassist.bytecode.Descriptor;
17import cuchaz.enigma.bytecode.ConstPoolEditor; 17import cuchaz.enigma.bytecode.ConstPoolEditor;
18import cuchaz.enigma.mapping.BehaviorEntry;
19import cuchaz.enigma.mapping.BehaviorEntryFactory;
18import cuchaz.enigma.mapping.ClassEntry; 20import cuchaz.enigma.mapping.ClassEntry;
19import cuchaz.enigma.mapping.MethodEntry; 21import cuchaz.enigma.mapping.MethodEntry;
20 22
@@ -57,17 +59,23 @@ public class BridgeFixer
57 case ConstPool.CONST_Methodref: 59 case ConstPool.CONST_Methodref:
58 case ConstPool.CONST_InterfaceMethodref: 60 case ConstPool.CONST_InterfaceMethodref:
59 { 61 {
60 // translate the name and type 62 BehaviorEntry behaviorEntry = BehaviorEntryFactory.create(
61 MethodEntry methodEntry = new MethodEntry( 63 Descriptor.toJvmName( editor.getMemberrefClassname( i ) ),
62 new ClassEntry( Descriptor.toJvmName( editor.getMemberrefClassname( i ) ) ),
63 editor.getMemberrefName( i ), 64 editor.getMemberrefName( i ),
64 editor.getMemberrefType( i ) 65 editor.getMemberrefType( i )
65 ); 66 );
66 MethodEntry bridgeMethodEntry = m_index.getBridgeMethod( methodEntry ); 67
67 if( bridgeMethodEntry != null ) 68 if( behaviorEntry instanceof MethodEntry )
68 { 69 {
69 // FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT 70 MethodEntry methodEntry = (MethodEntry)behaviorEntry;
70 editor.changeMemberrefNameAndType( i, bridgeMethodEntry.getName(), bridgeMethodEntry.getSignature() ); 71
72 // translate the name and type
73 MethodEntry bridgeMethodEntry = m_index.getBridgeMethod( methodEntry );
74 if( bridgeMethodEntry != null )
75 {
76 // FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT
77 editor.changeMemberrefNameAndType( i, bridgeMethodEntry.getName(), bridgeMethodEntry.getSignature() );
78 }
71 } 79 }
72 } 80 }
73 break; 81 break;