about summary refs log tree commit diff
path: root/src/libstd/rt/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd/rt/util.rs')
-rw-r--r--src/libstd/rt/util.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/libstd/rt/util.rs b/src/libstd/rt/util.rs
index e859f8e4fdb..070985fb0a5 100644
--- a/src/libstd/rt/util.rs
+++ b/src/libstd/rt/util.rs
@@ -72,16 +72,22 @@ pub fn default_sched_threads() -> uint {
 pub fn dumb_println(args: &fmt::Arguments) {
     use rt::io::native::stdio::stderr;
     use rt::io::{Writer, io_error, ResourceUnavailable};
+    use rt::task::Task;
+    use rt::local::Local;
 
     let mut out = stderr();
-    let mut again = true;
-    do io_error::cond.trap(|e| {
-        again = e.kind == ResourceUnavailable;
-    }).inside {
-        while again {
-            again = false;
-            fmt::writeln(&mut out as &mut Writer, args);
+    if Local::exists(None::<Task>) {
+        let mut again = true;
+        do io_error::cond.trap(|e| {
+            again = e.kind == ResourceUnavailable;
+        }).inside {
+            while again {
+                again = false;
+                fmt::writeln(&mut out as &mut Writer, args);
+            }
         }
+    } else {
+        fmt::writeln(&mut out as &mut Writer, args);
     }
 }