From aa7f90ceb63f81f265795bb0fbc0337b2a7ed63e Mon Sep 17 00:00:00 2001 From: Graham Date: Sun, 25 Aug 2019 19:37:55 +0100 Subject: [PATCH] Prevent if statements in swapped else blocks from incorrectly chaining --- .../openrs2/deob/ast/transform/IfElseTransformer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deob-ast/src/main/java/dev/openrs2/deob/ast/transform/IfElseTransformer.java b/deob-ast/src/main/java/dev/openrs2/deob/ast/transform/IfElseTransformer.java index 387cbbb6..440e722f 100644 --- a/deob-ast/src/main/java/dev/openrs2/deob/ast/transform/IfElseTransformer.java +++ b/deob-ast/src/main/java/dev/openrs2/deob/ast/transform/IfElseTransformer.java @@ -2,6 +2,7 @@ package dev.openrs2.deob.ast.transform; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.stmt.BlockStmt; import com.github.javaparser.ast.stmt.IfStmt; import com.github.javaparser.ast.stmt.Statement; import dev.openrs2.deob.ast.util.ExprUtils; @@ -58,7 +59,13 @@ public final class IfElseTransformer extends Transformer { var notCondition = ExprUtils.not(condition); if (ExprUtils.countNots(notCondition) < ExprUtils.countNots(condition)) { stmt.setCondition(notCondition); - stmt.setThenStmt(elseStmt.clone()); + if (elseStmt.isIfStmt()) { + var block = new BlockStmt(); + block.getStatements().add(elseStmt.clone()); + stmt.setThenStmt(block); + } else { + stmt.setThenStmt(elseStmt.clone()); + } stmt.setElseStmt(thenStmt.clone()); } });