Fixes NRE in pre-4.0 compilation
authorMarek Safar <marek.safar@gmail.com>
Wed, 3 Nov 2010 13:10:36 +0000 (13:10 +0000)
committerMarek Safar <marek.safar@gmail.com>
Wed, 3 Nov 2010 13:10:36 +0000 (13:10 +0000)
mcs/mcs/statement.cs

index 06cfc04ea1f7bbc06dfd93f2699801e9580ad9e3..cdbd28f559f075a021d7726b48376dc509273bf9 100644 (file)
@@ -4088,7 +4088,6 @@ namespace Mono.CSharp {
                                ec.Report.Error (185, loc,
                                        "`{0}' is not a reference type as required by the lock statement",
                                        expr.Type.GetSignatureForError ());
-                               return false;
                        }
 
                        ec.StartFlowBranching (this);
@@ -4118,7 +4117,13 @@ namespace Mono.CSharp {
                protected override void EmitPreTryBody (EmitContext ec)
                {
                        expr_copy.EmitAssign (ec, expr);
-                       lock_taken.EmitAssign (ec, new BoolLiteral (false, loc));
+
+                       if (lock_taken != null) {
+                               //
+                               // Initialize ref variable
+                               //
+                               lock_taken.EmitAssign (ec, new BoolLiteral (false, loc));
+                       }
                }
 
                protected override void EmitTryBody (EmitContext ec)