diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index c5ffcccdb464..c2f7986a2508 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -36,7 +36,7 @@ use std::c_str::ToCStr; use std::cast::transmute; use std::cast; use std::hashmap::{HashMap}; -use std::libc::{c_uint, c_longlong, c_ulonglong}; +use std::libc::{c_uint, c_longlong, c_ulonglong, c_char}; use std::vec; use syntax::ast::ident; use syntax::ast_map::{path, path_elt}; @@ -760,8 +760,8 @@ pub fn C_cstr(cx: &mut CrateContext, s: @str) -> ValueRef { None => () } - let sc = do s.with_c_str |buf| { - llvm::LLVMConstStringInContext(cx.llcx, buf, s.len() as c_uint, False) + let sc = do s.as_imm_buf |buf, buflen| { + llvm::LLVMConstStringInContext(cx.llcx, buf as *c_char, buflen as c_uint, False) }; let gsym = token::gensym("str"); diff --git a/src/librustc/middle/trans/tvec.rs b/src/librustc/middle/trans/tvec.rs index 5b0e2fa18f24..47d5b7ff3a53 100644 --- a/src/librustc/middle/trans/tvec.rs +++ b/src/librustc/middle/trans/tvec.rs @@ -265,7 +265,7 @@ pub fn trans_lit_str(bcx: @mut Block, Ignore => bcx, SaveIn(lldest) => { unsafe { - let bytes = str_lit.len(); // count null-terminator too + let bytes = str_lit.len(); let llbytes = C_uint(bcx.ccx(), bytes); let llcstr = C_cstr(bcx.ccx(), str_lit); let llcstr = llvm::LLVMConstPointerCast(llcstr, Type::i8p().to_ref());