X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fconsole-unix.c;h=38a82c92e957f3cb76cde6f66bd2031f6009c881;hb=c5d8e417e2531b56dc765e38f3d5cb1156cf4224;hp=5c46a85a9419339be30cb6df72122ac618d40ecc;hpb=196497780f01da0d275fafa1524bc2100459ee27;p=mono.git diff --git a/mono/metadata/console-unix.c b/mono/metadata/console-unix.c index 5c46a85a941..38a82c92e95 100644 --- a/mono/metadata/console-unix.c +++ b/mono/metadata/console-unix.c @@ -247,9 +247,11 @@ do_console_cancel_event (void) mono_error_cleanup (&error); return; } - mono_field_static_get_value (vtable, cancel_handler_field, &load_value); - if (load_value == NULL) + mono_field_static_get_value_checked (vtable, cancel_handler_field, &load_value, &error); + if (load_value == NULL || !is_ok (&error)) { + mono_error_cleanup (&error); return; + } klass = load_value->object.vtable->klass; method = mono_class_get_method_from_name (klass, "BeginInvoke", -1); @@ -445,6 +447,8 @@ set_control_chars (MonoArray *control_chars, const guchar *cc) MonoBoolean ves_icall_System_ConsoleDriver_TtySetup (MonoString *keypad, MonoString *teardown, MonoArray **control_chars, int **size) { + MonoError error; + int dims; dims = terminal_get_dimensions (); @@ -470,7 +474,10 @@ ves_icall_System_ConsoleDriver_TtySetup (MonoString *keypad, MonoString *teardow /* 17 is the number of entries set in set_control_chars() above. * NCCS is the total size, but, by now, we only care about those 17 values*/ - mono_gc_wbarrier_generic_store (control_chars, (MonoObject*) mono_array_new (mono_domain_get (), mono_defaults.byte_class, 17)); + MonoArray *control_chars_arr = mono_array_new_checked (mono_domain_get (), mono_defaults.byte_class, 17, &error); + if (mono_error_set_pending_exception (&error)) + return FALSE; + mono_gc_wbarrier_generic_store (control_chars, (MonoObject*) control_chars_arr); if (tcgetattr (STDIN_FILENO, &initial_attr) == -1) return FALSE; @@ -491,13 +498,21 @@ ves_icall_System_ConsoleDriver_TtySetup (MonoString *keypad, MonoString *teardow if (setup_finished) return TRUE; - keypad_xmit_str = keypad != NULL ? mono_string_to_utf8 (keypad) : NULL; + keypad_xmit_str = NULL; + if (keypad != NULL) { + keypad_xmit_str = mono_string_to_utf8_checked (keypad, &error); + if (mono_error_set_pending_exception (&error)) + return FALSE; + } console_set_signal_handlers (); setup_finished = TRUE; if (!atexit_called) { - if (teardown != NULL) - teardown_str = mono_string_to_utf8 (teardown); + if (teardown != NULL) { + teardown_str = mono_string_to_utf8_checked (teardown, &error); + if (mono_error_set_pending_exception (&error)) + return FALSE; + } mono_atexit (tty_teardown); }