2006-08-17 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / exception.c
index 469561cb8528d2ebef33b42aa4a3b39d91907df5..fa1d6126ac8e18c85ccf058dbd1a12cc05a50b28 100644 (file)
@@ -163,7 +163,7 @@ mono_exception_from_name_msg (MonoImage *image, const char *name_space,
        ex = mono_exception_from_name (image, name_space, name);
 
        if (msg)
-               ex->message = mono_string_new (mono_object_get_domain ((MonoObject*)ex), msg);
+               MONO_OBJECT_SETREF (ex, message, mono_string_new (mono_object_get_domain ((MonoObject*)ex), msg));
 
        return ex;
 }
@@ -337,15 +337,19 @@ mono_get_exception_type_load (MonoString *class_name, char *assembly_name)
 MonoException *
 mono_get_exception_not_implemented (const char *msg)
 {
-       MonoException *ex;
-       
-       ex = mono_exception_from_name (mono_get_corlib (), "System",
-                                      "NotImplementedException");
-
-       if (msg)
-               ex->message = mono_string_new (mono_object_get_domain ((MonoObject*)ex), msg);
+       return mono_exception_from_name_msg (mono_get_corlib (), "System", "NotImplementedException", msg);
+}
 
-       return ex;
+/**
+ * mono_get_exception_not_supported:
+ * @msg: the message to pass to the user
+ *
+ * Returns: a new instance of the System.NotSupportedException
+ */
+MonoException *
+mono_get_exception_not_supported (const char *msg)
+{
+       return mono_exception_from_name_msg (mono_get_corlib (), "System", "NotSupportedException", msg);
 }
 
 /**
@@ -396,9 +400,10 @@ mono_get_exception_argument_null (const char *arg)
        ex = mono_exception_from_name ( 
                mono_get_corlib (), "System", "ArgumentNullException");
 
-       if (arg)
-               ((MonoArgumentException *)ex)->param_name =
-                       mono_string_new (mono_object_get_domain ((MonoObject*)ex), arg);
+       if (arg) {
+               MonoArgumentException *argex = (MonoArgumentException *)ex;
+               MONO_OBJECT_SETREF (argex, param_name, mono_string_new (mono_object_get_domain ((MonoObject*)ex), arg));
+       }
        
        return ex;
 }
@@ -417,9 +422,10 @@ mono_get_exception_argument (const char *arg, const char *msg)
        ex = mono_exception_from_name_msg (
                mono_get_corlib (), "System", "ArgumentException", msg);
 
-       if (arg)
-               ((MonoArgumentException *)ex)->param_name =
-                       mono_string_new (mono_object_get_domain ((MonoObject*)ex), arg);
+       if (arg) {
+               MonoArgumentException *argex = (MonoArgumentException *)ex;
+               MONO_OBJECT_SETREF (argex, param_name, mono_string_new (mono_object_get_domain ((MonoObject*)ex), arg));
+       }
        
        return ex;
 }
@@ -438,9 +444,10 @@ mono_get_exception_argument_out_of_range (const char *arg)
        ex = mono_exception_from_name (
                mono_get_corlib (), "System", "ArgumentOutOfRangeException");
 
-       if (arg)
-               ((MonoArgumentException *)ex)->param_name =
-                       mono_string_new (mono_object_get_domain ((MonoObject*)ex), arg);
+       if (arg) {
+               MonoArgumentException *argex = (MonoArgumentException *)ex;
+               MONO_OBJECT_SETREF (argex, param_name, mono_string_new (mono_object_get_domain ((MonoObject*)ex), arg));
+       }
        
        return ex;
 }