2006-12-01 Marek Safar <marek.safar@gmail.com>
authorMarek Safar <marek.safar@gmail.com>
Fri, 1 Dec 2006 19:18:04 +0000 (19:18 -0000)
committerMarek Safar <marek.safar@gmail.com>
Fri, 1 Dec 2006 19:18:04 +0000 (19:18 -0000)
A fix for bug #80108
* ecore.cs (EventExpr.EmitAddOrRemove): Don't crash when right side is not
compatible.

svn path=/trunk/mcs/; revision=68841

mcs/mcs/ChangeLog
mcs/mcs/ecore.cs

index 274ef071be24fe92b56039619ce89be8a7f5f94b..fc99e7d891e86a244f1931754df1961af9d3df78 100644 (file)
@@ -1,3 +1,9 @@
+2006-12-01  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #80108
+       * ecore.cs (EventExpr.EmitAddOrRemove): Don't crash when right side is not
+       compatible.
+
 2006-11-30  Marek Safar  <marek.safar@gmail.com>
 
        Correct unary operators implementation (part I)
index 8f5398ecae40462e50a8ee6fdc5687452b9491c3..3bf1577993a5f6c8fab9f2db82d83c5ba2d5326e 100644 (file)
@@ -4057,7 +4057,11 @@ namespace Mono.CSharp {
 
                public void EmitAddOrRemove (EmitContext ec, Expression source)
                {
-                       BinaryDelegate source_del = (BinaryDelegate) source;
+                       BinaryDelegate source_del = source as BinaryDelegate;
+                       if (source_del == null) {
+                               Emit (ec);
+                               return;
+                       }
                        Expression handler = source_del.Right;
                        
                        Argument arg = new Argument (handler, Argument.AType.Expression);