fixed bug in while(){continue};
[swftools.git] / lib / as3 / parser.y
index 6e1c2be..0c6cfc1 100644 (file)
@@ -876,7 +876,12 @@ static void endfunction(token_t*ns, int flags, enum yytokentype getset, char*nam
         }
     }
     check_code_for_break(body);
-    f->body->code = body;
+
+    if(f->body)
+        f->body->code = body;
+    else //interface
+        if(body)
+            syntaxerror("interface methods can't have a method body");
         
     old_state();
 }
@@ -1338,12 +1343,13 @@ WHILE : MAYBELABEL "while" '(' {new_state();} EXPRESSION ')' CODEBLOCK {
     code_t*myjmp = $$ = abc_jump($$, 0);
     code_t*loopstart = $$ = abc_label($$);
     $$ = code_append($$, $7);
-    myjmp->branch = $$ = abc_nop($$);
+    code_t*cont = $$ = abc_nop($$);
+    myjmp->branch = cont;
     $$ = code_append($$, $5.c);
     $$ = abc_iftrue($$, loopstart);
     code_t*out = $$ = abc_nop($$);
     breakjumpsto($$, $1, out);
-    continuejumpsto($$, $1, loopstart);
+    continuejumpsto($$, $1, cont);
 
     $$ = killvars($$);
     old_state();