diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/managed.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libstd/managed.rs b/src/libstd/managed.rs index a27c8aa4a76..7322f0b0647 100644 --- a/src/libstd/managed.rs +++ b/src/libstd/managed.rs @@ -21,7 +21,7 @@ pub static RC_IMMORTAL : uint = 0x77777777; #[inline] pub fn refcount<T>(t: @T) -> uint { 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 @@ -110,3 +110,14 @@ fn test() { assert!((!ptr_eq::<int>(x, y))); 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); +} |
