Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index bd34f2459719d93512c939efb3f673a149347912..851db298e6c9145e7fd3760263b2cc618af40ee7 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); |
} |