From 35c079a988134f2fe8152b9008dcbfbadef11a31 Mon Sep 17 00:00:00 2001 From: LlamaLad7 Date: Sun, 2 Jun 2024 12:56:32 +0100 Subject: [PATCH] Fix: Resolve occasional NPE in Locals calculations. --- src/main/java/org/spongepowered/asm/util/Locals.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/spongepowered/asm/util/Locals.java b/src/main/java/org/spongepowered/asm/util/Locals.java index a7f01b209..4f62ce352 100644 --- a/src/main/java/org/spongepowered/asm/util/Locals.java +++ b/src/main/java/org/spongepowered/asm/util/Locals.java @@ -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);