From 45dc5356dfa37b80a3e5ed37783a38060fdb8c1f Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Fri, 25 Nov 2011 02:42:56 -0500 Subject: c_vec: Remove the mutable cast be forcing the pointer to be mutable throughout (discussion in #1217). --- src/lib/c_vec.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib/c_vec.rs b/src/lib/c_vec.rs index 3b94c54f373..ff5f636d103 100644 --- a/src/lib/c_vec.rs +++ b/src/lib/c_vec.rs @@ -43,7 +43,7 @@ export ptr; */ tag t { - t({ base: *T, size: uint, rsrc: @dtor_res}); + t({ base: *mutable T, size: uint, rsrc: @dtor_res}); } resource dtor_res(dtor: option::t) { @@ -57,14 +57,15 @@ resource dtor_res(dtor: option::t) { Section: Introduction forms */ -unsafe fn create(base: *T, size: uint) -> t { +unsafe fn create(base: *mutable T, size: uint) -> t { ret t({base: base, size: size, rsrc: @dtor_res(option::none) }); } -unsafe fn create_with_dtor(base: *T, size: uint, dtor: fn@()) -> t { +unsafe fn create_with_dtor(base: *mutable T, size: uint, dtor: fn@()) + -> t { ret t({base: base, size: size, rsrc: @dtor_res(option::some(dtor)) @@ -77,12 +78,12 @@ unsafe fn create_with_dtor(base: *T, size: uint, dtor: fn@()) -> t { fn get(t: t, ofs: uint) -> T { assert ofs < (*t).size; - ret unsafe { *ptr::offset((*t).base, ofs) }; + ret unsafe { *ptr::mut_offset((*t).base, ofs) }; } fn set(t: t, ofs: uint, v: T) { assert ofs < (*t).size; - unsafe { *(ptr::offset((*t).base, ofs) as *mutable T) = v }; + unsafe { *ptr::mut_offset((*t).base, ofs) = v }; } /* @@ -93,6 +94,6 @@ fn size(t: t) -> uint { ret (*t).size; } -unsafe fn ptr(t: t) -> *T { +unsafe fn ptr(t: t) -> *mutable T { ret (*t).base; } -- cgit 1.4.1-3-g733a5