RefCount: Fix reference counting pointer == and != with a T* on the left.
authorGabe Black <gblack@eecs.umich.edu>
Mon, 3 Jan 2011 20:31:20 +0000 (15:31 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 3 Jan 2011 20:31:20 +0000 (15:31 -0500)
These operators were expecting a const T& instead of a const T*, and were not
being picked up and used by gcc in the right places as a result. Apparently no
one used these operators before. A unit test which exposed these problems,
verified the solution, and checks other basic functionality is on the way.

src/base/refcnt.hh

index 64224ca7f357ce132474823936db5ef0ebcbf809..b73183a1a199266ef1a139db841a58b0680edd62 100644 (file)
@@ -109,7 +109,7 @@ bool operator==(const RefCountingPtr<T> &l, const T *r)
 { return l.get() == r; }
 
 template<class T>
-bool operator==(const T &l, const RefCountingPtr<T> &r)
+bool operator==(const T *l, const RefCountingPtr<T> &r)
 { return l == r.get(); }
 
 template<class T>
@@ -121,7 +121,7 @@ bool operator!=(const RefCountingPtr<T> &l, const T *r)
 { return l.get() != r; }
 
 template<class T>
-bool operator!=(const T &l, const RefCountingPtr<T> &r)
+bool operator!=(const T *l, const RefCountingPtr<T> &r)
 { return l != r.get(); }
 
 #endif // __BASE_REFCNT_HH__