Skip to content

Commit

Permalink
Fix: Resolve occasional NPE in Locals calculations.
Browse files Browse the repository at this point in the history
  • Loading branch information
LlamaLad7 authored and modmuss50 committed Jun 2, 2024
1 parent 02f8479 commit 35c079a
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/main/java/org/spongepowered/asm/util/Locals.java
Original file line number Diff line number Diff line change
Expand Up @@ -542,8 +542,9 @@ public static LocalVariableNode[] getLocalsAt(ClassNode classNode, MethodNode me
VarInsnNode varInsn = (VarInsnNode)insn;
boolean isLoad = insn.getOpcode() >= Opcodes.ILOAD && insn.getOpcode() <= Opcodes.SALOAD;
if (isLoad) {
frame[varInsn.var] = Locals.getLocalVariableAt(classNode, method, insn, varInsn.var);
int varSize = frame[varInsn.var].desc != null ? Type.getType(frame[varInsn.var].desc).getSize() : 1;
LocalVariableNode toLoad = Locals.getLocalVariableAt(classNode, method, insn, varInsn.var);
frame[varInsn.var] = toLoad;
int varSize = toLoad != null && toLoad.desc != null ? Type.getType(frame[varInsn.var].desc).getSize() : 1;
knownFrameSize = Math.max(knownFrameSize, varInsn.var + varSize);
if (settings.hasFlags(Settings.RESURRECT_EXPOSED_ON_LOAD)) {
Locals.resurrect(frame, knownFrameSize, settings);
Expand Down

0 comments on commit 35c079a

Please sign in to comment.