diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-15 19:46:50 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-15 19:46:50 +0000 |
commit | 0930752d49917c5f06188777b3b0f84a3644cce6 (patch) | |
tree | f50bb0a926a7bea43395c1a06103ec7f89862939 /chrome/browser/upgrade_detector.cc | |
parent | 951269b68cd119ea7eeb2e894477df800eeb4c3d (diff) | |
download | chromium_src-0930752d49917c5f06188777b3b0f84a3644cce6.zip chromium_src-0930752d49917c5f06188777b3b0f84a3644cce6.tar.gz chromium_src-0930752d49917c5f06188777b3b0f84a3644cce6.tar.bz2 |
Avoid a crash when installed version info is not obtainable.
I'm pretty sure the problem is due to users downgrading to versions where --product-version is not available. See the bug for more details.
BUG=46547
TEST=none
Review URL: http://codereview.chromium.org/2813005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49824 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/upgrade_detector.cc')
-rw-r--r-- | chrome/browser/upgrade_detector.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/chrome/browser/upgrade_detector.cc b/chrome/browser/upgrade_detector.cc index ae92c99..49db0ce 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; |