Round 5 test fixes and rebase conflicts

This commit is contained in:
Alex Crichton 2015-02-18 18:02:58 -08:00
parent cb29c468f3
commit 0cd54b85ef
8 changed files with 52 additions and 10 deletions

View File

@ -158,7 +158,7 @@ fn write_u64(&mut self, i: u64) {
#[inline]
#[unstable(feature = "hash", reason = "module was recently redesigned")]
fn write_usize(&mut self, i: usize) {
if cfg!(target_pointer_size = "32") {
if cfg!(target_pointer_width = "32") {
self.write_u32(i as u32)
} else {
self.write_u64(i as u64)
@ -241,7 +241,7 @@ impl<S: Writer + Hasher> Hash<S> for $ty {
#[inline]
fn hash(&self, state: &mut S) {
let a: [u8; ::$ty::BYTES] = unsafe {
mem::transmute((*self as $uty).to_le() as $ty)
mem::transmute(*self)
};
state.write(&a)
}

View File

@ -104,7 +104,7 @@ pub struct Process {
#[derive(Eq, Clone, Debug)]
struct EnvKey(CString);
#[cfg(windows)]
#[cfg(all(windows, stage0))]
impl<H: hash::Writer + hash::Hasher> hash::Hash<H> for EnvKey {
fn hash(&self, state: &mut H) {
let &EnvKey(ref x) = self;
@ -116,6 +116,18 @@ fn hash(&self, state: &mut H) {
}
}
}
#[cfg(all(windows, not(stage0)))]
impl hash::Hash for EnvKey {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
let &EnvKey(ref x) = self;
match str::from_utf8(x.as_bytes()) {
Ok(s) => for ch in s.chars() {
(ch as u8 as char).to_lowercase().hash(state);
},
Err(..) => x.hash(state)
}
}
}
#[cfg(windows)]
impl PartialEq for EnvKey {

View File

@ -561,10 +561,11 @@ pub fn get_exit_status() -> int {
#[cfg(target_os = "macos")]
unsafe fn load_argc_and_argv(argc: int,
argv: *const *const c_char) -> Vec<Vec<u8>> {
use ffi::CStr;
use iter::range;
(0..argc as uint).map(|i| {
ffi::c_str_to_bytes(&*argv.offset(i as int)).to_vec()
(0..argc).map(|i| {
CStr::from_ptr(*argv.offset(i)).to_bytes().to_vec()
}).collect()
}

View File

@ -266,7 +266,7 @@ pub fn args() -> Args {
let (argc, argv) = (*_NSGetArgc() as isize,
*_NSGetArgv() as *const *const c_char);
range(0, argc as isize).map(|i| {
let bytes = CStr::from_ptr(&*argv.offset(i)).to_bytes().to_vec();
let bytes = CStr::from_ptr(*argv.offset(i)).to_bytes().to_vec();
OsStringExt::from_vec(bytes)
}).collect::<Vec<_>>()
};

View File

@ -25,7 +25,7 @@
#![allow(dead_code)]
use dynamic_lib::DynamicLibrary;
use ffi;
use ffi::CStr;
use intrinsics;
use old_io::{IoResult, Writer};
use libc;
@ -362,7 +362,7 @@ macro_rules! sym{ ($e:expr, $t:ident) => (unsafe {
if ret == libc::TRUE {
try!(write!(w, " - "));
let ptr = info.Name.as_ptr() as *const libc::c_char;
let bytes = unsafe { ffi::c_str_to_bytes(&ptr) };
let bytes = unsafe { CStr::from_ptr(ptr).to_bytes() };
match str::from_utf8(bytes) {
Ok(s) => try!(demangle(w, s)),
Err(..) => try!(w.write_all(&bytes[..bytes.len()-1])),

View File

@ -589,6 +589,7 @@ fn backslash_run_ends_in_quote(s: &[char], mut i: uint) -> bool {
}
}
#[cfg(stage0)]
fn with_envp<K, V, T, F>(env: Option<&collections::HashMap<K, V>>, cb: F) -> T
where K: BytesContainer + Eq + Hash<Hasher>,
V: BytesContainer,
@ -616,6 +617,34 @@ fn with_envp<K, V, T, F>(env: Option<&collections::HashMap<K, V>>, cb: F) -> T
_ => cb(ptr::null_mut())
}
}
#[cfg(not(stage0))]
fn with_envp<K, V, T, F>(env: Option<&collections::HashMap<K, V>>, cb: F) -> T
where K: BytesContainer + Eq + Hash,
V: BytesContainer,
F: FnOnce(*mut c_void) -> T,
{
// On Windows we pass an "environment block" which is not a char**, but
// rather a concatenation of null-terminated k=v\0 sequences, with a final
// \0 to terminate.
match env {
Some(env) => {
let mut blk = Vec::new();
for pair in env {
let kv = format!("{}={}",
pair.0.container_as_str().unwrap(),
pair.1.container_as_str().unwrap());
blk.extend(kv.utf16_units());
blk.push(0);
}
blk.push(0);
cb(blk.as_mut_ptr() as *mut c_void)
}
_ => cb(ptr::null_mut())
}
}
fn with_dirp<T, F>(d: Option<&CString>, cb: F) -> T where
F: FnOnce(*const u16) -> T,

View File

@ -18,7 +18,7 @@
///////////////////////////////////////////////////////////////////////////
pub trait TheTrait<'b> : PhantomFn<Self,Self> {
pub trait TheTrait<'b> : PhantomFn<&'b Self,Self> {
type TheAssocType;
}

View File

@ -34,7 +34,7 @@
static uni: &'static str = "Les Miséééééééérables";
static yy: usize = 25;
static bob: Option<std::borrow::Cow<'static, [isize]>> = None;
static bob: Option<&'static [isize]> = None;
// buglink test - see issue #1337.