From c7b23f9a86fcdf328ebb349d9a5ad4e4c7dfe6ce Mon Sep 17 00:00:00 2001 From: Kevin Cantu Date: Wed, 25 Jan 2012 00:53:17 -0800 Subject: [PATCH] Replacing str::unsafe_from_bytes with str::from_bytes (part 1) --- src/libcore/extfmt.rs | 1 + src/libstd/freebsd_os.rs | 3 ++- src/libstd/generic_os.rs | 2 +- src/libstd/linux_os.rs | 3 ++- src/libstd/macos_os.rs | 3 ++- src/libstd/run_program.rs | 4 ++-- src/libstd/uvtmp.rs | 4 ++-- src/libstd/win32_os.rs | 3 ++- src/test/bench/task-perf-word-count-generic.rs | 2 +- src/test/run-pass/hashmap-memory.rs | 2 +- 10 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/libcore/extfmt.rs b/src/libcore/extfmt.rs index 38b36f59d32..a06e01f491e 100644 --- a/src/libcore/extfmt.rs +++ b/src/libcore/extfmt.rs @@ -440,6 +440,7 @@ mod rt { let head = s[0]; if head == '+' as u8 || head == '-' as u8 || head == ' ' as u8 { let headstr = str::unsafe_from_bytes([head]); + // FIXME: not UTF-8 safe let bytelen = str::byte_len(s); let numpart = str::substr(s, 1u, bytelen - 1u); ret headstr + padstr + numpart; diff --git a/src/libstd/freebsd_os.rs b/src/libstd/freebsd_os.rs index 847262ca10c..89aad5d7777 100644 --- a/src/libstd/freebsd_os.rs +++ b/src/libstd/freebsd_os.rs @@ -129,7 +129,8 @@ fn dylib_filename(base: str) -> str { ret "lib" + base + ".so"; } /// followed by a path separator fn get_exe_path() -> option::t unsafe { let bufsize = 1023u; - let path = str::unsafe_from_bytes(vec::init_elt(bufsize, 0u8)); + // FIXME: path "strings" will likely need fixing... + let path = str::from_bytes(vec::init_elt(bufsize, 0u8)); let mib = [libc_constants::CTL_KERN, libc_constants::KERN_PROC, libc_constants::KERN_PROC_PATHNAME, -1i32]; diff --git a/src/libstd/generic_os.rs b/src/libstd/generic_os.rs index 750b333f1a6..934352e7788 100644 --- a/src/libstd/generic_os.rs +++ b/src/libstd/generic_os.rs @@ -75,7 +75,7 @@ fn getenv(n: str) -> option::t { unsafe { vec::unsafe::set_len(v, res); } - ret option::some(str::unsafe_from_bytes(v)); + ret option::some(str::from_bytes(v)); // UTF-8 or fail } else { nsize = res; } } fail; diff --git a/src/libstd/linux_os.rs b/src/libstd/linux_os.rs index 7bc0212c1c2..82b1197a51f 100644 --- a/src/libstd/linux_os.rs +++ b/src/libstd/linux_os.rs @@ -125,7 +125,8 @@ fn dylib_filename(base: str) -> str { ret "lib" + base + ".so"; } /// followed by a path separator fn get_exe_path() -> option::t { let bufsize = 1023u; - let path = str::unsafe_from_bytes(vec::init_elt(bufsize, 0u8)); + // FIXME: path "strings" will likely need fixing... + let path = str::from_bytes(vec::init_elt(bufsize, 0u8)); ret str::as_buf("/proc/self/exe", { |proc_self_buf| str::as_buf(path, { |path_buf| if libc::readlink(proc_self_buf, path_buf, bufsize) != -1 { diff --git a/src/libstd/macos_os.rs b/src/libstd/macos_os.rs index b72fc732379..cd984870781 100644 --- a/src/libstd/macos_os.rs +++ b/src/libstd/macos_os.rs @@ -133,8 +133,9 @@ fn dylib_filename(base: str) -> str { ret "lib" + base + ".dylib"; } fn get_exe_path() -> option::t { // FIXME: This doesn't handle the case where the buffer is too small + // FIXME: path "strings" will likely need fixing... let bufsize = 1023u32; - let path = str::unsafe_from_bytes(vec::init_elt(bufsize as uint, 0u8)); + let path = str::from_bytes(vec::init_elt(bufsize as uint, 0u8)); ret str::as_buf(path, { |path_buf| if mac_libc::_NSGetExecutablePath(path_buf, ptr::mut_addr_of(bufsize)) == 0i32 { diff --git a/src/libstd/run_program.rs b/src/libstd/run_program.rs index e40526b5884..5b2de1e57d0 100644 --- a/src/libstd/run_program.rs +++ b/src/libstd/run_program.rs @@ -216,7 +216,7 @@ fn read_all(rd: io::reader) -> str { let buf = ""; while !rd.eof() { let bytes = rd.read_bytes(4096u); - buf += str::unsafe_from_bytes(bytes); + buf += str::from_bytes(bytes); } ret buf; } @@ -347,7 +347,7 @@ mod tests { let buf = ""; while !reader.eof() { let bytes = reader.read_bytes(4096u); - buf += str::unsafe_from_bytes(bytes); + buf += str::from_bytes(bytes); } os::fclose(file); ret buf; diff --git a/src/libstd/uvtmp.rs b/src/libstd/uvtmp.rs index e2059890511..d92a42d2c5e 100644 --- a/src/libstd/uvtmp.rs +++ b/src/libstd/uvtmp.rs @@ -131,7 +131,7 @@ fn test_http() { unsafe { log(error, len); let buf = vec::unsafe::from_buf(buf, len as uint); - let str = str::unsafe_from_bytes(buf); + let str = str::from_bytes(buf); #error("read something"); io::println(str); } @@ -146,4 +146,4 @@ fn test_http() { } join_thread(thread); delete_thread(thread); -} \ No newline at end of file +} diff --git a/src/libstd/win32_os.rs b/src/libstd/win32_os.rs index 949c818a7ed..83306c757a4 100644 --- a/src/libstd/win32_os.rs +++ b/src/libstd/win32_os.rs @@ -113,8 +113,9 @@ fn getcwd() -> str { ret rustrt::rust_getcwd(); } fn get_exe_path() -> option::t { // FIXME: This doesn't handle the case where the buffer is too small + // FIXME: path "strings" will likely need fixing... let bufsize = 1023u; - let path = str::unsafe_from_bytes(vec::init_elt(bufsize, 0u8)); + let path = str::from_bytes(vec::init_elt(bufsize, 0u8)); ret str::as_buf(path, { |path_buf| if kernel32::GetModuleFileNameA(0u, path_buf, bufsize as u32) != 0u32 { diff --git a/src/test/bench/task-perf-word-count-generic.rs b/src/test/bench/task-perf-word-count-generic.rs index 55fbc6705b6..8be28fabd79 100644 --- a/src/test/bench/task-perf-word-count-generic.rs +++ b/src/test/bench/task-perf-word-count-generic.rs @@ -32,7 +32,7 @@ import comm::recv; import comm::send; fn map(&&filename: [u8], emit: map_reduce::putter<[u8], int>) { - let f = io::file_reader(str::unsafe_from_bytes(filename)); + let f = io::file_reader(str::from_bytes(filename)); while true { alt read_word(f) { diff --git a/src/test/run-pass/hashmap-memory.rs b/src/test/run-pass/hashmap-memory.rs index 777b56c7520..9301d93874e 100644 --- a/src/test/run-pass/hashmap-memory.rs +++ b/src/test/run-pass/hashmap-memory.rs @@ -81,7 +81,7 @@ mod map_reduce { mapper_done { num_mappers -= 1; } find_reducer(k, cc) { let c; - alt reducers.find(str::unsafe_from_bytes(k)) { + alt reducers.find(str::from_bytes(k)) { some(_c) { c = _c; } none { c = 0; } }