Skip to content

Commit 22d4641

Browse files
committed
Fix invalid reads of cstrs in trans
1 parent 2744bcd commit 22d4641

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/comp/middle/trans_common.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -843,9 +843,10 @@ fn C_u8(i: uint) -> ValueRef { ret C_integral(T_i8(), i, False); }
843843
// our boxed-and-length-annotated strings.
844844
fn C_cstr(cx: &@crate_ctxt, s: &str) -> ValueRef {
845845
let sc = llvm::LLVMConstString(str::buf(s), str::byte_len(s), False);
846+
let gname = cx.names.next("str");
846847
let g =
847848
llvm::LLVMAddGlobal(cx.llmod, val_ty(sc),
848-
str::buf(cx.names.next("str")));
849+
str::buf(gname));
849850
llvm::LLVMSetInitializer(g, sc);
850851
llvm::LLVMSetGlobalConstant(g, True);
851852
llvm::LLVMSetLinkage(g, lib::llvm::LLVMInternalLinkage as llvm::Linkage);
@@ -864,9 +865,9 @@ fn C_str(cx: &@crate_ctxt, s: &str) -> ValueRef {
864865
C_struct([C_int(abi::const_refcount as int), C_int(len + 1u as int),
865866
C_int(len + 1u as int), C_int(0),
866867
llvm::LLVMConstString(str::buf(s), len, False)]);
868+
let gname = cx.names.next("str");
867869
let g =
868-
llvm::LLVMAddGlobal(cx.llmod, val_ty(box),
869-
str::buf(cx.names.next("str")));
870+
llvm::LLVMAddGlobal(cx.llmod, val_ty(box), str::buf(gname));
870871
llvm::LLVMSetInitializer(g, box);
871872
llvm::LLVMSetGlobalConstant(g, True);
872873
llvm::LLVMSetLinkage(g, lib::llvm::LLVMInternalLinkage as llvm::Linkage);
@@ -907,9 +908,9 @@ fn C_bytes(bytes: &[u8]) -> ValueRef {
907908

908909
fn C_shape(ccx: &@crate_ctxt, bytes: &[u8]) -> ValueRef {
909910
let llshape = C_bytes(bytes);
911+
let gname = ccx.names.next("shape");
910912
let llglobal =
911-
llvm::LLVMAddGlobal(ccx.llmod, val_ty(llshape),
912-
str::buf(ccx.names.next("shape")));
913+
llvm::LLVMAddGlobal(ccx.llmod, val_ty(llshape), str::buf(gname));
913914
llvm::LLVMSetInitializer(llglobal, llshape);
914915
llvm::LLVMSetGlobalConstant(llglobal, True);
915916
llvm::LLVMSetLinkage(llglobal,

0 commit comments

Comments
 (0)