Author: cesar
Date: 2005-11-21 20:56:30 -0500 (Mon, 21 Nov 2005)
New Revision: 53334

Modified:
   trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/ChangeLog
   trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/Statement.cs
Log:
2005-11-21  Cesar Lopez Nataren  <[EMAIL PROTECTED]>

        * Statement.cs (class Switch): Preserve the value of
        EmitContext.LoopEnd as can be overriden in nested blocks, for
        example in a switch statement inside a for-loop.

Modified: trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/ChangeLog
===================================================================
--- trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/ChangeLog       
2005-11-22 01:34:43 UTC (rev 53333)
+++ trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/ChangeLog       
2005-11-22 01:56:30 UTC (rev 53334)
@@ -1,3 +1,9 @@
+2005-11-21  Cesar Lopez Nataren  <[EMAIL PROTECTED]>
+
+       * Statement.cs (class Switch): Preserve the value of
+       EmitContext.LoopEnd as can be overriden in nested blocks, for
+       example in a switch statement inside a for-loop.
+
 2005-10-28  Raja R Harinath  <[EMAIL PROTECTED]>
 
        * Import.cs (Resolve): Update to changes in GMCS.

Modified: trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/Statement.cs
===================================================================
--- trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/Statement.cs    
2005-11-22 01:34:43 UTC (rev 53333)
+++ trunk/mcs/class/Microsoft.JScript/Microsoft.JScript/Statement.cs    
2005-11-22 01:56:30 UTC (rev 53334)
@@ -596,6 +596,7 @@
                        ILGenerator ig = ec.ig;
                        Label init_default = ig.DefineLabel ();
                        Label end_of_default = ig.DefineLabel ();
+                       Label old_end = ec.LoopEnd;
                        ec.LoopEnd = ig.DefineLabel ();
 
                        LocalBuilder loc = ig.DeclareLocal (typeof (object));
@@ -632,7 +633,8 @@
                                        c.EmitStms (ec);                        
        
                                }
                        } 
-                       ig.MarkLabel (ec.LoopEnd);                      
+                       ig.MarkLabel (ec.LoopEnd);
+                       ec.LoopEnd = old_end;
                }
        }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to