diff --git a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java index fa822d9aedf811500f6da99aa1dfe73d542747d2..5f89b0673fae9b093bfe3de9de762e554a000302 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -101,6 +101,10 @@ public class InsnGen { } public void addArg(ICodeWriter code, InsnArg arg, boolean wrap) throws CodegenException { + addArg(code, arg, wrap ? BODY_ONLY_FLAG : BODY_ONLY_NOWRAP_FLAGS); + } + + public void addArg(ICodeWriter code, InsnArg arg, Set flags) throws CodegenException { if (arg.isRegister()) { CodeVar codeVar = CodeGenUtils.getCodeVar((RegisterArg) arg); if (codeVar != null) { @@ -113,7 +117,7 @@ public class InsnGen { } else if (arg.isLiteral()) { code.add(lit((LiteralArg) arg)); } else if (arg.isInsnWrap()) { - addWrappedArg(code, (InsnWrapArg) arg, wrap); + addWrappedArg(code, (InsnWrapArg) arg, flags); } else if (arg.isNamed()) { if (arg instanceof NamedArg) { VariableNode node = mth.getVariable(((NamedArg) arg).getIndex()); @@ -127,15 +131,14 @@ public class InsnGen { } } - private void addWrappedArg(ICodeWriter code, InsnWrapArg arg, boolean wrap) throws CodegenException { + private void addWrappedArg(ICodeWriter code, InsnWrapArg arg, Set flags) throws CodegenException { InsnNode wrapInsn = arg.getWrapInsn(); if (wrapInsn.contains(AFlag.FORCE_ASSIGN_INLINE)) { code.add('('); makeInsn(wrapInsn, code, Flags.INLINE); code.add(')'); } else { - Flags flags = wrap ? Flags.BODY_ONLY : Flags.BODY_ONLY_NOWRAP; - makeInsn(wrapInsn, code, flags); + makeInsnBody(code, wrapInsn, flags); } } @@ -509,7 +512,7 @@ public class InsnGen { break; case ONE_ARG: - addArg(code, insn.getArg(0)); + addArg(code, insn.getArg(0), state); break; /* fallback mode instructions */ diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java b/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java index c6c1d1295f8da26bd238adc05c5716d6b759b6ae..fadffd99b4a599e4d9c87a101b6b0a3346a38dd9 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/MarkMethodsForInline.java @@ -76,7 +76,7 @@ public class MarkMethodsForInline extends AbstractVisitor { } if (insnsCount == 1) { InsnNode insn = insns.get(0); - if (insn.getType() == InsnType.RETURN) { + if (insn.getType() == InsnType.RETURN && insn.getArgsCount() == 1) { // synthetic field getter // set arg from 'return' instruction return addInlineAttr(mth, InsnNode.wrapArg(insn.getArg(0)));