summaryrefslogtreecommitdiffstats
path: root/chrome/browser/upgrade_detector.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-15 19:46:50 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-15 19:46:50 +0000
commit0930752d49917c5f06188777b3b0f84a3644cce6 (patch)
treef50bb0a926a7bea43395c1a06103ec7f89862939 /chrome/browser/upgrade_detector.cc
parent951269b68cd119ea7eeb2e894477df800eeb4c3d (diff)
downloadchromium_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.cc15
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;