Răsfoiți Sursa

fixed bug in exc/protect.

Nicolas Cannasse 19 ani în urmă
părinte
comite
d83003a1f3
1 a modificat fișierele cu 7 adăugiri și 1 ștergeri
  1. 7 1
      genswf8.ml

+ 7 - 1
genswf8.ml

@@ -630,7 +630,10 @@ and gen_try_catch ctx retval e catchs =
 			write ctx APop;
 			write ctx APop;
 			push ctx [VStr (name,false);VReg 0];
 			push ctx [VStr (name,false);VReg 0];
 			write ctx ALocalAssign;
 			write ctx ALocalAssign;
-			gen_expr ctx retval e;			
+			let block = open_block ctx in
+			ctx.regs <- PMap.add name None ctx.regs;
+			gen_expr ctx retval e;
+			block();
 			(fun() -> ())
 			(fun() -> ())
 		| Some t ->
 		| Some t ->
 			getvar ctx (gen_access ctx false (mk (TType t) (mk_mono()) e.epos));
 			getvar ctx (gen_access ctx false (mk (TType t) (mk_mono()) e.epos));
@@ -646,7 +649,10 @@ and gen_try_catch ctx retval e catchs =
 			write ctx APop;
 			write ctx APop;
 			push ctx [VStr (name,false); VReg 0];
 			push ctx [VStr (name,false); VReg 0];
 			write ctx ALocalAssign;
 			write ctx ALocalAssign;
+			let block = open_block ctx in
+			ctx.regs <- PMap.add name None ctx.regs;
 			gen_expr ctx retval e;
 			gen_expr ctx retval e;
+			block();
 			c
 			c
 		) in
 		) in
 		if retval then ctx.stack_size <- ctx.stack_size - 1;
 		if retval then ctx.stack_size <- ctx.stack_size - 1;