提交 5f659c8d 编写于 作者: S Skylot

fix: don't apply again already resolved types (#1012)

上级 e054ea66
......@@ -81,17 +81,23 @@ public class TypeSearch {
private boolean applyResolvedVars() {
List<TypeSearchVarInfo> resolvedVars = state.getResolvedVars();
List<TypeSearchVarInfo> updatedVars = new ArrayList<>();
for (TypeSearchVarInfo var : resolvedVars) {
SSAVar ssaVar = var.getVar();
ArgType resolvedType = var.getCurrentType();
if (!resolvedType.isTypeKnown()) {
// ignore unknown variables
continue;
}
if (resolvedType.equals(ssaVar.getTypeInfo().getType())) {
// type already set
continue;
}
ssaVar.setType(resolvedType);
updatedVars.add(var);
}
boolean applySuccess = true;
for (TypeSearchVarInfo var : resolvedVars) {
if (!var.getCurrentType().isTypeKnown()) {
// exclude unknown variables
continue;
}
for (TypeSearchVarInfo var : updatedVars) {
TypeUpdateResult res = typeUpdate.applyWithWiderIgnSame(mth, var.getVar(), var.getCurrentType());
if (res == TypeUpdateResult.REJECT) {
mth.addComment("JADX DEBUG: Multi-variable search result rejected for " + var);
......
......@@ -18,7 +18,6 @@ public class TestPrimitiveConversion2 extends SmaliTest {
.doesNotContain("z2 | 2")
.containsOne("(z2 ? 1 : 0) | 2")
.containsOne("if (z2 && formatCurrency != null) {")
.containsOne("i = 1;")
.containsOne("spannable = null;");
.containsOne("i = 1;");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册