diff options
| author | bors <bors@rust-lang.org> | 2014-02-15 15:21:28 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-02-15 15:21:28 -0800 |
| commit | d98668a55996d656072a4cac7abb1dcbbdf4f48b (patch) | |
| tree | 9480a773995df199411254f148e321b64cd24556 /src/libstd/rt | |
| parent | 6b025c803c72d610c2ad4c950151b0d23782d114 (diff) | |
| parent | 4668cdf3c4788e4a67f1b7dea0eb2d661ac05a49 (diff) | |
| download | rust-d98668a55996d656072a4cac7abb1dcbbdf4f48b.tar.gz rust-d98668a55996d656072a4cac7abb1dcbbdf4f48b.zip | |
auto merge of #12235 : huonw/rust/raii-lock, r=alexcrichton
- adds a `LockGuard` type returned by `.lock` and `.trylock` that unlocks the mutex in the destructor - renames `mutex::Mutex` to `StaticNativeMutex` - adds a `NativeMutex` type with a destructor - removes `LittleLock` - adds `#[must_use]` to `sync::mutex::Guard` to remind people to use it
Diffstat (limited to 'src/libstd/rt')
| -rw-r--r-- | src/libstd/rt/args.rs | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/libstd/rt/args.rs b/src/libstd/rt/args.rs index c417ea375fd..6f73265978b 100644 --- a/src/libstd/rt/args.rs +++ b/src/libstd/rt/args.rs @@ -68,12 +68,11 @@ mod imp { use option::{Option, Some, None}; use ptr::RawPtr; use iter::Iterator; - use unstable::finally::Finally; - use unstable::mutex::{Mutex, MUTEX_INIT}; + use unstable::mutex::{StaticNativeMutex, NATIVE_MUTEX_INIT}; use mem; static mut global_args_ptr: uint = 0; - static mut lock: Mutex = MUTEX_INIT; + static mut lock: StaticNativeMutex = NATIVE_MUTEX_INIT; #[cfg(not(test))] pub unsafe fn init(argc: int, argv: **u8) { @@ -111,16 +110,10 @@ mod imp { } fn with_lock<T>(f: || -> T) -> T { - (|| { - unsafe { - lock.lock(); - f() - } - }).finally(|| { - unsafe { - lock.unlock(); - } - }) + unsafe { + let _guard = lock.lock(); + f() + } } fn get_global_ptr() -> *mut Option<~~[~[u8]]> { |
