[mcs] Don't reset temporary stack fields too early. Fixes #43265
[mono.git] / mcs / mcs / statement.cs
index 703e7ba497fef805446a5df389a8fa4f81258816..ad08d02b5db754d3948bdb8ad9c4b690011c1aff 100644 (file)
@@ -7041,6 +7041,7 @@ namespace Mono.CSharp {
                        ec.Emit (OpCodes.Stloc, temp);
 
                        var exception_field = ec.GetTemporaryField (type);
+                       exception_field.AutomaticallyReuse = false;
                        ec.EmitThis ();
                        ec.Emit (OpCodes.Ldloc, temp);
                        exception_field.EmitAssignFromStack (ec);
@@ -7064,7 +7065,7 @@ namespace Mono.CSharp {
                        ec.Emit (OpCodes.Throw);
                        ec.MarkLabel (skip_throw);
 
-                       exception_field.IsAvailableForReuse = true;
+                       exception_field.PrepareCleanup (ec);
 
                        EmitUnwindFinallyTable (ec);
                }