From 090c82f5043e654fd6d26ca5d56912e1196b6ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 18 Sep 2016 09:59:56 +0200 Subject: [PATCH] AS3 Direct editing fix - saving local register names without breaking slots --- .../avm2/parser/script/AVM2SourceGenerator.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index 968a350c9..db54fc321 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -1649,17 +1649,18 @@ public class AVM2SourceGenerator implements SourceGenerator { while (registerNames.size() <= regIndex) { registerNames.add(UNUSED); registerTypes.add("*"); - slotNames.add(UNUSED); - slotTypes.add("*"); registerLines.add(paramLine); } registerNames.set(regIndex, varName); registerTypes.set(regIndex, varName); - slotNames.set(regIndex, varName); - slotTypes.set(regIndex, varName); registerLines.set(regIndex, n.line); + + slotNames.add(varName); + slotTypes.add(n.type.toString()); } //in second round the rest else if (round == 2 && !m.matches()) { + + //search for some unused indices first: int newRegIndex = -1; for (int j = 0; j < registerNames.size(); j++) { if (UNUSED.equals(registerNames.get(j))) { @@ -1671,15 +1672,14 @@ public class AVM2SourceGenerator implements SourceGenerator { newRegIndex = registerNames.size(); registerNames.add(UNUSED); registerTypes.add("*"); - slotNames.add(UNUSED); - slotTypes.add("*"); registerLines.add(paramLine); } registerNames.set(newRegIndex, n.getVariableName()); registerTypes.set(newRegIndex, n.type.toString()); - slotNames.set(newRegIndex, n.getVariableName()); - slotTypes.set(newRegIndex, n.type.toString()); registerLines.set(newRegIndex, n.line); + + slotNames.add(n.getVariableName()); + slotTypes.add(n.type.toString()); } } }