about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/rt.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/libstd/rt.rs b/src/libstd/rt.rs
index d17dfb25f31..e2c1bba50c4 100644
--- a/src/libstd/rt.rs
+++ b/src/libstd/rt.rs
@@ -30,19 +30,18 @@ pub use panicking::{begin_panic, begin_panic_fmt, update_panic_count};
 // the real work.
 #[cfg(not(any(test, stage0)))]
 fn lang_start_internal(main: &(Fn() -> i32 + Sync + ::panic::RefUnwindSafe),
-                       argc: isize, argv: *const *const u8) -> ! {
+                       argc: isize, argv: *const *const u8) -> isize {
     use panic;
     use sys;
     use sys_common;
     use sys_common::thread_info;
     use thread::Thread;
-    use process;
     #[cfg(not(feature = "backtrace"))]
     use mem;
 
     sys::init();
 
-    process::exit(unsafe {
+    unsafe {
         let main_guard = sys::thread::guard::init();
         sys::stack_overflow::init();
 
@@ -65,14 +64,14 @@ fn lang_start_internal(main: &(Fn() -> i32 + Sync + ::panic::RefUnwindSafe),
         let exit_code = panic::catch_unwind(move || main());
 
         sys_common::cleanup();
-        exit_code.unwrap_or(101)
-    });
+        exit_code.unwrap_or(101) as isize
+    }
 }
 
 #[cfg(not(any(test, stage0)))]
 #[lang = "start"]
 fn lang_start<T: ::termination::Termination + 'static>
-    (main: fn() -> T, argc: isize, argv: *const *const u8) -> !
+    (main: fn() -> T, argc: isize, argv: *const *const u8) -> isize
 {
     lang_start_internal(&move || main().report(), argc, argv)
 }