diff options
| author | Eric Holk <eric.holk@gmail.com> | 2012-06-27 10:24:51 -0700 |
|---|---|---|
| committer | Eric Holk <eric.holk@gmail.com> | 2012-06-27 10:24:51 -0700 |
| commit | 404afcbb41898cf7f516f07cae3dc42e47bda46d (patch) | |
| tree | 16b72317bd5a99e0ba684f66a2ef69e46ec1ee63 /src | |
| parent | 697f1e38d646bb6c7bab054c8c8c5b469c566ef6 (diff) | |
| download | rust-404afcbb41898cf7f516f07cae3dc42e47bda46d.tar.gz rust-404afcbb41898cf7f516f07cae3dc42e47bda46d.zip | |
Mark exclusive arc-related functions as unsafe. Fixes #2727.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/arc.rs | 24 | ||||
| -rw-r--r-- | src/libcore/sys.rs | 4 |
2 files changed, 13 insertions, 15 deletions
diff --git a/src/libcore/arc.rs b/src/libcore/arc.rs index f13a34d260e..12ada1b9b18 100644 --- a/src/libcore/arc.rs +++ b/src/libcore/arc.rs @@ -104,19 +104,17 @@ impl methods<T: send> for exclusive<T> { arc_destruct(self.data) } - fn with<U>(f: fn(sys::condition, x: &T) -> U) -> U { - unsafe { - let ptr: ~arc_data<ex_data<T>> = - unsafe::reinterpret_cast(self.data); - let r = { - let rec: &ex_data<T> = &(*ptr).data; - rec.lock.lock_cond() {|c| - f(c, &rec.data) - } - }; - unsafe::forget(ptr); - r - } + unsafe fn with<U>(f: fn(sys::condition, x: &T) -> U) -> U { + let ptr: ~arc_data<ex_data<T>> = + unsafe::reinterpret_cast(self.data); + let r = { + let rec: &ex_data<T> = &(*ptr).data; + rec.lock.lock_cond() {|c| + f(c, &rec.data) + } + }; + unsafe::forget(ptr); + r } } diff --git a/src/libcore/sys.rs b/src/libcore/sys.rs index 771107cd1a7..05616b0dcf3 100644 --- a/src/libcore/sys.rs +++ b/src/libcore/sys.rs @@ -106,13 +106,13 @@ fn create_lock() -> lock_and_signal { } impl methods for lock_and_signal { - fn lock<T>(f: fn() -> T) -> T { + unsafe fn lock<T>(f: fn() -> T) -> T { rustrt::rust_lock_cond_lock(self.lock); let _r = unlock(self.lock); f() } - fn lock_cond<T>(f: fn(condition) -> T) -> T { + unsafe fn lock_cond<T>(f: fn(condition) -> T) -> T { rustrt::rust_lock_cond_lock(self.lock); let _r = unlock(self.lock); f(condition_(self.lock)) |
