From 8415515cbee679ddd2a17bbb152da10f1d947359 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 4 Sep 2012 15:23:30 -0700 Subject: libcore: Make as_bytes_slice() not include the null byte --- src/libcore/str.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/libcore') diff --git a/src/libcore/str.rs b/src/libcore/str.rs index c4506941488..869981bdf67 100644 --- a/src/libcore/str.rs +++ b/src/libcore/str.rs @@ -1752,8 +1752,17 @@ pure fn as_bytes(s: ~str, f: fn(~[u8]) -> T) -> T { } } +/** + * Work with the byte buffer of a string as a byte slice. + * + * The byte slice does not include the null terminator. + */ pure fn as_bytes_slice(s: &a/str) -> &a/[u8] { - unsafe { ::unsafe::reinterpret_cast(&s) } + unsafe { + let (ptr, len): (*u8, uint) = ::unsafe::reinterpret_cast(&s); + let outgoing_tuple: (*u8, uint) = (ptr, len - 1); + return ::unsafe::reinterpret_cast(&outgoing_tuple); + } } /** -- cgit 1.4.1-3-g733a5