Index: sync/internal_api/public/util/weak_handle.h |
diff --git a/sync/internal_api/public/util/weak_handle.h b/sync/internal_api/public/util/weak_handle.h |
index bac7c379230f5e23886b78a35eb45f1810554a0e..dcf1ef5743e90c02737d994387551f59bebd4250 100644 |
--- a/sync/internal_api/public/util/weak_handle.h |
+++ b/sync/internal_api/public/util/weak_handle.h |
@@ -58,6 +58,7 @@ |
#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/weak_ptr.h" |
+#include "sync/base/sync_export.h" |
namespace base { |
class MessageLoopProxy; |
@@ -99,7 +100,7 @@ struct ParamTraits<T[]> { |
// Base class for WeakHandleCore<T> to avoid template bloat. Handles |
// the interaction with the owner thread and its message loop. |
-class WeakHandleCoreBase { |
+class SYNC_EXPORT WeakHandleCoreBase { |
Raghu Simha
2012/12/26 08:02:38
Unfortunately, WeakHandleCoreBase must be exported
|
public: |
// Assumes the current thread is the owner thread. |
WeakHandleCoreBase(); |
@@ -109,7 +110,7 @@ class WeakHandleCoreBase { |
protected: |
// May be destroyed on any thread. |
- ~WeakHandleCoreBase(); |
+ virtual ~WeakHandleCoreBase(); |
// May be called on any thread. |
void PostToOwnerThread(const tracked_objects::Location& from_here, |
@@ -125,7 +126,7 @@ class WeakHandleCoreBase { |
// WeakHandleCore<T> contains all the logic for WeakHandle<T>. |
template <typename T> |
class WeakHandleCore |
- : public NON_EXPORTED_BASE(WeakHandleCoreBase), |
+ : public WeakHandleCoreBase, |
public base::RefCountedThreadSafe<WeakHandleCore<T> > { |
public: |
// Must be called on |ptr|'s owner thread, which is assumed to be |
@@ -199,7 +200,7 @@ class WeakHandleCore |
friend class base::RefCountedThreadSafe<WeakHandleCore<T> >; |
// May be destroyed on any thread. |
- ~WeakHandleCore() {} |
+ virtual ~WeakHandleCore() {} |
// GCC 4.2.1 on OS X gets confused if all the DoCall functions are |
// named the same, so we distinguish them. |
@@ -291,6 +292,8 @@ class WeakHandle { |
new internal::WeakHandleCore<T>(other.Get()) : |
NULL) {} |
+ virtual ~WeakHandle() {} |
+ |
// Returns true iff this WeakHandle is initialized. Note that being |
// initialized isn't a guarantee that the underlying object is still |
// alive. |