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,8 +124,16 @@ public abstract class PacketEvents implements InterfaceProvider | ||
| 124 | return; | 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 | return; | 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,8 +910,9 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T | ||
| 910 | 910 | ||
| 911 | method.instructions.add(new InsnNode(returnType.getOpcode(Opcodes.IRETURN))); | 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,7 +925,7 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T | ||
| 924 | boolean isOrOperation = this.logicOp.isOr(); | 925 | boolean isOrOperation = this.logicOp.isOr(); |
| 925 | boolean breakOnMatch = this.logicOp.breakOnMatch(); | 926 | boolean breakOnMatch = this.logicOp.breakOnMatch(); |
| 926 | int initialValue = isOrOperation && (!this.logicOp.assumeTrue() || this.size > 0) ? Opcodes.ICONST_0 : Opcodes.ICONST_1; | 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 | method.instructions.add(new InsnNode(initialValue)); | 930 | method.instructions.add(new InsnNode(initialValue)); |
| 930 | method.instructions.add(new VarInsnNode(Opcodes.ISTORE, localIndex)); | 931 | method.instructions.add(new VarInsnNode(Opcodes.ISTORE, localIndex)); |
| @@ -946,8 +947,8 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T | @@ -946,8 +947,8 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T | ||
| 946 | method.instructions.add(new VarInsnNode(Opcodes.ILOAD, localIndex)); | 947 | method.instructions.add(new VarInsnNode(Opcodes.ILOAD, localIndex)); |
| 947 | method.instructions.add(new InsnNode(Opcodes.IRETURN)); | 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 | /** |