summaryrefslogtreecommitdiffstats
path: root/base/supports_user_data.cc
diff options
context:
space:
mode:
authorjyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-29 20:10:36 +0000
committerjyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-29 20:10:36 +0000
commit1f7d92afe7d288c92ec4dcb9a2473221284bcfeb (patch)
tree9dd967c20e4b606ec9a53e18ccbe2149870aa86b /base/supports_user_data.cc
parenta6aeb63075e88ea771b3e940dcb985383ba4d123 (diff)
downloadchromium_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.cc5
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