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 | /** |