diff options
| author | bors <bors@rust-lang.org> | 2013-08-04 23:16:59 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-08-04 23:16:59 -0700 |
| commit | 4fdd7204215662232491ed0737bc43a569204607 (patch) | |
| tree | c3612929642b19ee640acebc5b3dd1fb18e30193 /src/libstd | |
| parent | 83d2a0431cf722f3a4cc1c51cdc05f544c3d1cb1 (diff) | |
| parent | 167bdff04164c92c203c319b730bdc2344dbe089 (diff) | |
| download | rust-4fdd7204215662232491ed0737bc43a569204607.tar.gz rust-4fdd7204215662232491ed0737bc43a569204607.zip | |
auto merge of #8299 : brson/rust/yet-more-newsched-fixes, r=brson
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/logging.rs | 10 | ||||
| -rw-r--r-- | src/libstd/rt/logging.rs | 21 | ||||
| -rw-r--r-- | src/libstd/rt/sched.rs | 4 |
3 files changed, 20 insertions, 15 deletions
diff --git a/src/libstd/logging.rs b/src/libstd/logging.rs index c662e5997af..6e11d14aea9 100644 --- a/src/libstd/logging.rs +++ b/src/libstd/logging.rs @@ -85,16 +85,6 @@ pub fn log_type<T>(level: u32, object: &T) { fn newsched_log_str(msg: ~str) { use rt::task::Task; use rt::local::Local; - use str::StrSlice; - use container::Container; - - // Truncate the string - let buf_bytes = 256; - let msg = if msg.len() > buf_bytes { - msg.slice(0, buf_bytes) + "[...]" - } else { - msg - }; unsafe { match Local::try_unsafe_borrow::<Task>() { diff --git a/src/libstd/rt/logging.rs b/src/libstd/rt/logging.rs index 11d11daebc2..9056f0d52e0 100644 --- a/src/libstd/rt/logging.rs +++ b/src/libstd/rt/logging.rs @@ -10,6 +10,7 @@ use either::*; use libc; +use str::StrSlice; pub trait Logger { fn log(&mut self, msg: Either<~str, &'static str>); @@ -35,10 +36,22 @@ impl Logger for StdErrLogger { s } }; - let dbg = ::libc::STDERR_FILENO as ::io::fd_t; - dbg.write_str(s); - dbg.write_str("\n"); - dbg.flush(); + + // Truncate the string + let buf_bytes = 256; + if s.len() > buf_bytes { + let s = s.slice(0, buf_bytes) + "[...]"; + print(s); + } else { + print(s) + }; + + fn print(s: &str) { + let dbg = ::libc::STDERR_FILENO as ::io::fd_t; + dbg.write_str(s); + dbg.write_str("\n"); + dbg.flush(); + } } } diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs index a5c8abc2a6c..1a75f2569b5 100644 --- a/src/libstd/rt/sched.rs +++ b/src/libstd/rt/sched.rs @@ -339,8 +339,8 @@ impl Scheduler { let mut this = self; match this.message_queue.pop() { Some(PinnedTask(task)) => { - let mut task = task; this.event_loop.callback(Scheduler::run_sched_once); + let mut task = task; task.give_home(Sched(this.make_handle())); this.resume_task_immediately(task); return None; @@ -351,10 +351,12 @@ impl Scheduler { return this.sched_schedule_task(task); } Some(Wake) => { + this.event_loop.callback(Scheduler::run_sched_once); this.sleepy = false; return Some(this); } Some(Shutdown) => { + this.event_loop.callback(Scheduler::run_sched_once); if this.sleepy { // There may be an outstanding handle on the // sleeper list. Pop them all to make sure that's |
