diff options
author | jyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-29 20:10:36 +0000 |
---|---|---|
committer | jyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-29 20:10:36 +0000 |
commit | 1f7d92afe7d288c92ec4dcb9a2473221284bcfeb (patch) | |
tree | 9dd967c20e4b606ec9a53e18ccbe2149870aa86b /base/supports_user_data.cc | |
parent | a6aeb63075e88ea771b3e940dcb985383ba4d123 (diff) | |
download | chromium_src-1f7d92afe7d288c92ec4dcb9a2473221284bcfeb.zip chromium_src-1f7d92afe7d288c92ec4dcb9a2473221284bcfeb.tar.gz chromium_src-1f7d92afe7d288c92ec4dcb9a2473221284bcfeb.tar.bz2 |
Make sure that when a SupportsUserData is destroyed, objects destroyed transitively see it as empty.
BUG=358707
Review URL: https://codereview.chromium.org/298023008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273568 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/supports_user_data.cc')
-rw-r--r-- | base/supports_user_data.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/base/supports_user_data.cc b/base/supports_user_data.cc index 2a0263e..9689014 100644 --- a/base/supports_user_data.cc +++ b/base/supports_user_data.cc @@ -35,6 +35,11 @@ void SupportsUserData::DetachUserDataThread() { SupportsUserData::~SupportsUserData() { DCHECK(thread_checker_.CalledOnValidThread() || user_data_.empty()); + DataMap local_user_data; + user_data_.swap(local_user_data); + // Now this->user_data_ is empty, and any destructors called transitively from + // the destruction of |local_user_data| will see it that way instead of + // examining a being-destroyed object. } } // namespace base |