From 89b66675bf2a5a777646684a91a99913d183ad96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Wed, 2 Jan 2013 14:52:21 +0100 Subject: [PATCH] AS3: Dup setlocal fix --- trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java index 38ab0d706..ed541e10c 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java @@ -1542,9 +1542,15 @@ public class AVM2Code { } } if (!isKilled(reg, 0, end)) { - TreeItem v = (TreeItem) stack.pop(); - stack.push(new LocalRegTreeItem(ins, reg, v)); - stack.push(v); + for (int i = ip; i >= start; i--) { + if (code.get(i).definition instanceof DupIns) { + TreeItem v = (TreeItem) stack.pop(); + stack.push(new LocalRegTreeItem(ins, reg, v)); + stack.push(v); + } else { + break; + } + } } else { ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc, localRegNames, fullyQualifiedNames); }