| Index: chrome/browser/extensions/extension_updater.cc
|
| diff --git a/chrome/browser/extensions/extension_updater.cc b/chrome/browser/extensions/extension_updater.cc
|
| index b2b3972451c4816fcfe85a7f7c91797461c2aeaa..654d6dc8c385eb7e70283b35782fcef1e70fad8d 100644
|
| --- a/chrome/browser/extensions/extension_updater.cc
|
| +++ b/chrome/browser/extensions/extension_updater.cc
|
| @@ -417,6 +417,7 @@ void ExtensionUpdater::Start() {
|
| }
|
|
|
| void ExtensionUpdater::Stop() {
|
| + service_ = NULL;
|
| timer_.Stop();
|
| manifest_fetcher_.reset();
|
| extension_fetcher_.reset();
|
| @@ -428,6 +429,10 @@ void ExtensionUpdater::OnURLFetchComplete(
|
| const URLFetcher* source, const GURL& url, const URLRequestStatus& status,
|
| int response_code, const ResponseCookies& cookies,
|
| const std::string& data) {
|
| + // This can be called after we've been stopped.
|
| + if (!service_)
|
| + return;
|
| +
|
| if (source == manifest_fetcher_.get()) {
|
| OnManifestFetchComplete(url, status, response_code, data);
|
| } else if (source == extension_fetcher_.get()) {
|
| @@ -540,6 +545,9 @@ void ExtensionUpdater::OnManifestFetchComplete(const GURL& url,
|
| void ExtensionUpdater::HandleManifestResults(
|
| const ManifestFetchData& fetch_data,
|
| const UpdateManifest::Results& results) {
|
| + // This can be called after we've been stopped.
|
| + if (!service_)
|
| + return;
|
|
|
| // Examine the parsed manifest and kick off fetches of any new crx files.
|
| std::vector<int> updates = DetermineUpdates(fetch_data, results);
|
|
|