From 86ec517451e02981a5b3c4180cb52bac61fdf620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sat, 9 Feb 2013 21:25:53 +0100 Subject: [PATCH] AS3: fixed continues at the end of ontrue && onfalse in the if clause --- .../com/jpexs/asdec/abc/avm2/flowgraph/Graph.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/flowgraph/Graph.java b/trunk/src/com/jpexs/asdec/abc/avm2/flowgraph/Graph.java index 087e61504..ffab8f10f 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/flowgraph/Graph.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/flowgraph/Graph.java @@ -694,8 +694,20 @@ public class Graph { if (onTrue.isEmpty() && onFalse.isEmpty() && (trueStack.size() > stackSizeBefore) && (falseStack.size() > stackSizeBefore)) { stack.push(new TernarOpTreeItem(null, expr, trueStack.pop(), falseStack.pop())); - } else { + } else { ret.add(new IfTreeItem(null, expr, onTrue, onFalse)); + + //Same continues in onTrue and onFalse gets continue on parent level + if((!onTrue.isEmpty())&&(!onFalse.isEmpty())){ + if(onTrue.get(onTrue.size()-1) instanceof ContinueTreeItem){ + if(onFalse.get(onFalse.size()-1) instanceof ContinueTreeItem){ + if(((ContinueTreeItem)onTrue.get(onTrue.size()-1)).loopPos==((ContinueTreeItem)onFalse.get(onFalse.size()-1)).loopPos){ + onTrue.remove(onTrue.size()-1); + ret.add(onFalse.remove(onFalse.size()-1)); + } + } + } + } } } if (loop && (part.nextParts.size() > 1)) {