summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authorjstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-11 19:41:34 +0000
committerjstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-11 19:41:34 +0000
commitbd9892eb0aa064c447acdad288658cf0f0f1be9a (patch)
treeb0fc7a62b498520e534e67b3847a9943181bf738 /chrome/browser/extensions
parentb3f7fe2e15beda8c077abe37d39f21332bde8add (diff)
downloadchromium_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.cc6
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);
}