diff options
author | jstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-11 19:41:34 +0000 |
---|---|---|
committer | jstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-11 19:41:34 +0000 |
commit | bd9892eb0aa064c447acdad288658cf0f0f1be9a (patch) | |
tree | b0fc7a62b498520e534e67b3847a9943181bf738 /chrome/browser/extensions | |
parent | b3f7fe2e15beda8c077abe37d39f21332bde8add (diff) | |
download | chromium_src-bd9892eb0aa064c447acdad288658cf0f0f1be9a.zip chromium_src-bd9892eb0aa064c447acdad288658cf0f0f1be9a.tar.gz chromium_src-bd9892eb0aa064c447acdad288658cf0f0f1be9a.tar.bz2 |
Fix crash in ExtensionService::SetIsIncognitoEnabled.
Make a copy of the extension id from within ExtensionService::SetIsIncognitoEnabled, since the const ref may get wiped out when reloading the extension.
BUG=103762
TEST=no crash when toggling incognito mode for an extension
Review URL: http://codereview.chromium.org/8529001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109676 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_service.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index bbf5f01..b9d848a 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -1476,11 +1476,15 @@ void ExtensionService::SetIsIncognitoEnabled( bool extension_is_enabled = std::find(extensions_.begin(), extensions_.end(), extension) != extensions_.end(); + + // When we reload the extension the ID may be invalidated if we've passed it + // by const ref everywhere. Make a copy to be safe. + std::string id = extension_id; if (extension_is_enabled) ReloadExtension(extension->id()); // Reloading the extension invalidates the |extension| pointer. - extension = GetInstalledExtension(extension_id); + extension = GetInstalledExtension(id); if (extension) SyncExtensionChangeIfNeeded(*extension); } |