Fix an off-by-one in managed::refcount
This fixes a bug I accidentally introduced in #9922
This commit is contained in:
parent
a1848bc755
commit
6a11e17b6b
@ -21,7 +21,7 @@ pub static RC_IMMORTAL : uint = 0x77777777;
|
|||||||
#[inline]
|
#[inline]
|
||||||
pub fn refcount<T>(t: @T) -> uint {
|
pub fn refcount<T>(t: @T) -> uint {
|
||||||
use unstable::raw::Repr;
|
use unstable::raw::Repr;
|
||||||
unsafe { (*t.repr()).ref_count }
|
unsafe { (*t.repr()).ref_count - 1 }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Determine if two shared boxes point to the same object
|
/// Determine if two shared boxes point to the same object
|
||||||
@ -110,3 +110,14 @@ fn test() {
|
|||||||
assert!((!ptr_eq::<int>(x, y)));
|
assert!((!ptr_eq::<int>(x, y)));
|
||||||
assert!((!ptr_eq::<int>(y, x)));
|
assert!((!ptr_eq::<int>(y, x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn refcount_test() {
|
||||||
|
use clone::Clone;
|
||||||
|
|
||||||
|
let x = @3;
|
||||||
|
assert_eq!(refcount(x), 1);
|
||||||
|
let y = x.clone();
|
||||||
|
assert_eq!(refcount(x), 2);
|
||||||
|
assert_eq!(refcount(y), 2);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user