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) -> 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::(x, y))); assert!((!ptr_eq::(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); +}