summaryrefslogtreecommitdiffstats
path: root/base/memory
diff options
context:
space:
mode:
authorhans@chromium.org <hans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-11 00:37:42 +0000
committerhans@chromium.org <hans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-11 00:37:42 +0000
commita827a56218099cbb06ae49c89c6dea6c32a2644f (patch)
tree7241331755f5f9bcc27c2a7353251fd99bf8fff5 /base/memory
parentba721606c1d309ff0e98068d717aaf1f994455d5 (diff)
downloadchromium_src-a827a56218099cbb06ae49c89c6dea6c32a2644f.zip
chromium_src-a827a56218099cbb06ae49c89c6dea6c32a2644f.tar.gz
chromium_src-a827a56218099cbb06ae49c89c6dea6c32a2644f.tar.bz2
dllexport base::internal::WeakReference::Flag
Flag's methods can end up getting called across a dll boundary due to inlining. For example, Flag's destructor ends up being called from gpu.dll when the following call chain gets inlined: gpu::gles2::ContextGroup::HaveContexts() -> std::vector<WeakPtr<gles2::GLES2Decoder>>::remove_if() -> WeakPtr copy assignment -> WeakReference copy assignment -> scoped_refptr<Flag> copy assignment -> RefCountedThreadSafe<Flag>::Release -> ~Flag. (Note that dllimport/export isn't inherited by nested classes, but the visibility attribute that we use on other platforms is.) BUG=82385 TEST=build gpu.dll with Clang in a shared_library Release build R=mark@chromium.org Review URL: https://codereview.chromium.org/321983002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276220 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/memory')
-rw-r--r--base/memory/weak_ptr.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/base/memory/weak_ptr.h b/base/memory/weak_ptr.h
index 1675889..f6001e2 100644
--- a/base/memory/weak_ptr.h
+++ b/base/memory/weak_ptr.h
@@ -83,7 +83,7 @@ class BASE_EXPORT WeakReference {
public:
// Although Flag is bound to a specific thread, it may be deleted from another
// via base::WeakPtr::~WeakPtr().
- class Flag : public RefCountedThreadSafe<Flag> {
+ class BASE_EXPORT Flag : public RefCountedThreadSafe<Flag> {
public:
Flag();