X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fexception.c;h=b3bc6652efb4f917e1a88941fd5c4b38bbb6177f;hb=4e8db5f7f14d1af2daeff2c331b5b724be47e86f;hp=0bbe402763c2ef43fb0eeeddbad0238fe0290ac7;hpb=24d028fdf87158f258331b936cbd593d134519b2;p=mono.git diff --git a/mono/metadata/exception.c b/mono/metadata/exception.c index 0bbe402763c..b3bc6652efb 100644 --- a/mono/metadata/exception.c +++ b/mono/metadata/exception.c @@ -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; } @@ -204,6 +204,18 @@ mono_get_exception_thread_abort () "ThreadAbortException"); } +/** + * mono_get_exception_thread_interrupted: + * + * Returns: a new instance of the System.Threading.ThreadInterruptedException. + */ +MonoException * +mono_get_exception_thread_interrupted () +{ + return mono_exception_from_name (mono_get_corlib (), "System.Threading", + "ThreadInterruptedException"); +} + /** * mono_get_exception_arithmetic: * @@ -400,9 +412,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; } @@ -421,9 +434,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; } @@ -442,9 +456,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; } @@ -498,7 +513,7 @@ mono_get_exception_file_not_found (MonoString *fname) MonoException * mono_get_exception_file_not_found2 (const char *msg, MonoString *fname) { - MonoString *s = mono_string_new (mono_domain_get (), msg); + MonoString *s = msg ? mono_string_new (mono_domain_get (), msg) : NULL; return mono_exception_from_name_two_strings ( mono_get_corlib (), "System.IO", "FileNotFoundException", s, fname); @@ -591,6 +606,22 @@ mono_get_exception_bad_image_format (const char *msg) return mono_exception_from_name_msg (mono_get_corlib (), "System", "BadImageFormatException", msg); } +/** + * mono_get_exception_bad_image_format2: + * @msg: an informative message for the user. + * @fname: The full name of the file with the invalid image. + * + * Returns: a new instance of the System.BadImageFormatException + */ +MonoException * +mono_get_exception_bad_image_format2 (const char *msg, MonoString *fname) +{ + MonoString *s = msg ? mono_string_new (mono_domain_get (), msg) : NULL; + + return mono_exception_from_name_two_strings ( + mono_get_corlib (), "System", "BadImageFormatException", s, fname); +} + /** * mono_get_exception_stack_overflow: *