Commit 0091f010996a94df97b90f5353bf39ca0e851197
1 parent
755c90be
fix locals indexing derp in HandlerList
Showing
2 changed files
with
15 additions
and
6 deletions
java/common/com/mumfrey/liteloader/core/PacketEvents.java
| ... | ... | @@ -124,8 +124,16 @@ public abstract class PacketEvents implements InterfaceProvider |
| 124 | 124 | return; |
| 125 | 125 | } |
| 126 | 126 | |
| 127 | - if (this.packetHandlers[packetId].all().handlePacket(netHandler, e.getSource())) | |
| 127 | + try | |
| 128 | 128 | { |
| 129 | + if (this.packetHandlers[packetId].all().handlePacket(netHandler, e.getSource())) | |
| 130 | + { | |
| 131 | + return; | |
| 132 | + } | |
| 133 | + } | |
| 134 | + catch (Throwable ex) | |
| 135 | + { | |
| 136 | + ex.printStackTrace(); | |
| 129 | 137 | return; |
| 130 | 138 | } |
| 131 | 139 | ... | ... |
java/common/com/mumfrey/liteloader/core/event/HandlerList.java
| ... | ... | @@ -910,8 +910,9 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T |
| 910 | 910 | |
| 911 | 911 | method.instructions.add(new InsnNode(returnType.getOpcode(Opcodes.IRETURN))); |
| 912 | 912 | |
| 913 | - method.maxLocals = args.length + 1; | |
| 914 | - method.maxStack = args.length + 1; | |
| 913 | + int argsSize = ByteCodeUtilities.getArgsSize(args); | |
| 914 | + method.maxLocals = argsSize + 1; | |
| 915 | + method.maxStack = argsSize + 1; | |
| 915 | 916 | } |
| 916 | 917 | |
| 917 | 918 | /** |
| ... | ... | @@ -924,7 +925,7 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T |
| 924 | 925 | boolean isOrOperation = this.logicOp.isOr(); |
| 925 | 926 | boolean breakOnMatch = this.logicOp.breakOnMatch(); |
| 926 | 927 | int initialValue = isOrOperation && (!this.logicOp.assumeTrue() || this.size > 0) ? Opcodes.ICONST_0 : Opcodes.ICONST_1; |
| 927 | - int localIndex = ByteCodeUtilities.getArgsSize(args); | |
| 928 | + int localIndex = ByteCodeUtilities.getArgsSize(args) + 1; | |
| 928 | 929 | |
| 929 | 930 | method.instructions.add(new InsnNode(initialValue)); |
| 930 | 931 | method.instructions.add(new VarInsnNode(Opcodes.ISTORE, localIndex)); |
| ... | ... | @@ -946,8 +947,8 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T |
| 946 | 947 | method.instructions.add(new VarInsnNode(Opcodes.ILOAD, localIndex)); |
| 947 | 948 | method.instructions.add(new InsnNode(Opcodes.IRETURN)); |
| 948 | 949 | |
| 949 | - method.maxLocals = args.length + 2; | |
| 950 | - method.maxStack = args.length + 1; | |
| 950 | + method.maxLocals = localIndex + 2; | |
| 951 | + method.maxStack = localIndex + 1; | |
| 951 | 952 | } |
| 952 | 953 | |
| 953 | 954 | /** | ... | ... |