Commit 7299229f5debdced46fe260a21315eb7190e9061
1 parent
617b2c8f
minor fixes for BeforeInvoke when initialised using a MethodInfo
Showing
1 changed file
with
22 additions
and
9 deletions
java/common/com/mumfrey/liteloader/transformers/event/inject/BeforeInvoke.java
| ... | ... | @@ -175,6 +175,16 @@ public class BeforeInvoke extends InjectionPoint |
| 175 | 175 | this.methodOwners = method.getOwners(); |
| 176 | 176 | this.methodSignatures = method.getDescriptors(); |
| 177 | 177 | this.ordinal = ordinal; |
| 178 | + | |
| 179 | + for (int i = 0; i < this.methodOwners.length; i++) | |
| 180 | + { | |
| 181 | + if (this.methodOwners[i] != null) this.methodOwners[i] = this.methodOwners[i].replace('.', '/'); | |
| 182 | + } | |
| 183 | + | |
| 184 | + for (int i = 0; i < this.methodSignatures.length; i++) | |
| 185 | + { | |
| 186 | + if (this.methodSignatures[i] != null) this.methodSignatures[i] = this.methodSignatures[i].replace('.', '/'); | |
| 187 | + } | |
| 178 | 188 | } |
| 179 | 189 | |
| 180 | 190 | public void setLogging(boolean logging) |
| ... | ... | @@ -200,23 +210,25 @@ public class BeforeInvoke extends InjectionPoint |
| 200 | 210 | { |
| 201 | 211 | MethodInsnNode node = (MethodInsnNode)insn; |
| 202 | 212 | |
| 203 | - if (this.logging) LiteLoaderLogger.info("BeforeInvokeStrategy is considering invokation NAME=" + node.name + " DESC=" + node.desc + " OWNER=" + node.owner); | |
| 213 | + if (this.logging) LiteLoaderLogger.info("BeforeInvoke is considering invokation NAME=" + node.name + " DESC=" + node.desc + " OWNER=" + node.owner); | |
| 204 | 214 | |
| 205 | 215 | int index = BeforeInvoke.arrayIndexOf(this.methodNames, node.name, -1); |
| 206 | - if (index > -1 && this.logging) LiteLoaderLogger.info("BeforeInvokeStrategy found a matching invoke, checking owner/signature..."); | |
| 216 | + if (index > -1 && this.logging) LiteLoaderLogger.info("BeforeInvoke found a matching invoke, checking owner/signature..."); | |
| 207 | 217 | |
| 208 | - if (index > -1 && BeforeInvoke.arrayIndexOf(this.methodOwners, node.owner, index) == index && BeforeInvoke.arrayIndexOf(this.methodSignatures, node.desc, index) == index) | |
| 218 | + int ownerIndex = BeforeInvoke.arrayIndexOf(this.methodOwners, node.owner, index); | |
| 219 | + int descIndex = BeforeInvoke.arrayIndexOf(this.methodSignatures, node.desc, index); | |
| 220 | + if (index > -1 && ownerIndex == index && descIndex == index) | |
| 209 | 221 | { |
| 210 | - if (this.logging) LiteLoaderLogger.info("BeforeInvokeStrategy found a matching invoke, checking ordinal..."); | |
| 222 | + if (this.logging) LiteLoaderLogger.info("BeforeInvoke found a matching invoke, checking ordinal..."); | |
| 211 | 223 | if (this.ordinal == -1) |
| 212 | 224 | { |
| 213 | - if (this.logging) LiteLoaderLogger.info("BeforeInvokeStrategy found a matching invoke at ordinal %d", ordinal); | |
| 225 | + if (this.logging) LiteLoaderLogger.info("BeforeInvoke found a matching invoke at ordinal %d", ordinal); | |
| 214 | 226 | nodes.add(node); |
| 215 | 227 | found = true; |
| 216 | 228 | } |
| 217 | 229 | else if (this.ordinal == ordinal) |
| 218 | 230 | { |
| 219 | - if (this.logging) LiteLoaderLogger.info("BeforeInvokeStrategy found a matching invoke at ordinal %d", ordinal); | |
| 231 | + if (this.logging) LiteLoaderLogger.info("BeforeInvoke found a matching invoke at ordinal %d", ordinal); | |
| 220 | 232 | nodes.add(node); |
| 221 | 233 | return true; |
| 222 | 234 | } |
| ... | ... | @@ -240,10 +252,11 @@ public class BeforeInvoke extends InjectionPoint |
| 240 | 252 | private static int arrayIndexOf(String[] haystack, String needle, int pos) |
| 241 | 253 | { |
| 242 | 254 | if (haystack == null) return pos; |
| 255 | + if (pos > -1 && pos < haystack.length && needle.equals(haystack[pos])) return pos; | |
| 256 | + | |
| 243 | 257 | for (int index = 0; index < haystack.length; index++) |
| 244 | - { | |
| 245 | 258 | if (needle.equals(haystack[index])) return index; |
| 246 | - } | |
| 247 | - return pos; | |
| 259 | + | |
| 260 | + return -1; | |
| 248 | 261 | } |
| 249 | 262 | } | ... | ... |