| Index: chrome/browser/upgrade_detector.cc
|
| diff --git a/chrome/browser/upgrade_detector.cc b/chrome/browser/upgrade_detector.cc
|
| index ae92c99692bdc8a42e968921eb47d5815086aaf9..49db0ce83e1b7a0668fc20826d3d92e8ad191e58 100644
|
| --- a/chrome/browser/upgrade_detector.cc
|
| +++ b/chrome/browser/upgrade_detector.cc
|
| @@ -102,10 +102,19 @@ class DetectUpgradeTask : public Task {
|
| NOTREACHED() << "Failed to get current file version";
|
| return;
|
| }
|
| - scoped_ptr<Version> running_version(Version::GetVersionFromString(
|
| - WideToUTF16(version->file_version())));
|
|
|
| - if (installed_version->IsHigherThan(running_version.get())) {
|
| + scoped_ptr<Version> running_version(
|
| + Version::GetVersionFromString(WideToUTF16(version->file_version())));
|
| + if (running_version.get() == NULL) {
|
| + NOTREACHED() << "Failed to parse version info";
|
| + return;
|
| + }
|
| +
|
| + // |installed_version| may be NULL when the user downgrades on Linux (by
|
| + // switching from dev to beta channel, for example). The user needs a
|
| + // restart in this case as well. See http://crbug.com/46547
|
| + if (!installed_version.get() ||
|
| + installed_version->IsHigherThan(running_version.get())) {
|
| ChromeThread::PostTask(ChromeThread::UI, FROM_HERE,
|
| upgrade_detected_task_);
|
| upgrade_detected_task_ = NULL;
|
|
|