diff options
| author | 2014-09-24 20:32:19 -0400 | |
|---|---|---|
| committer | 2014-09-24 20:32:19 -0400 | |
| commit | 064fe6a628f23f21eb2c8f584215f439e54cfaec (patch) | |
| tree | 733f840aca8dca170e9403de51be256b24ed00b2 /src/cuchaz/enigma/analysis/BridgeFixer.java | |
| parent | HOW DO I WRITE SO MANY BUGS?!? (diff) | |
| download | enigma-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.java | 22 |
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; | |||
| 15 | import javassist.bytecode.ConstPool; | 15 | import javassist.bytecode.ConstPool; |
| 16 | import javassist.bytecode.Descriptor; | 16 | import javassist.bytecode.Descriptor; |
| 17 | import cuchaz.enigma.bytecode.ConstPoolEditor; | 17 | import cuchaz.enigma.bytecode.ConstPoolEditor; |
| 18 | import cuchaz.enigma.mapping.BehaviorEntry; | ||
| 19 | import cuchaz.enigma.mapping.BehaviorEntryFactory; | ||
| 18 | import cuchaz.enigma.mapping.ClassEntry; | 20 | import cuchaz.enigma.mapping.ClassEntry; |
| 19 | import cuchaz.enigma.mapping.MethodEntry; | 21 | import 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; |