| 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);
|
| }
|
|
|