summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorbrettw@google.com <brettw@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-04 18:13:51 +0000
committerbrettw@google.com <brettw@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-04 18:13:51 +0000
commit1fcffab820c3a870d0c1b2baa71184984c2c7cc2 (patch)
tree969c14ed55c824485d557ba1de14d8c70f24abbe /chrome
parent13ef73fa2247e0bd16b5a95c57e9cdbaef1aaba3 (diff)
downloadchromium_src-1fcffab820c3a870d0c1b2baa71184984c2c7cc2.zip
chromium_src-1fcffab820c3a870d0c1b2baa71184984c2c7cc2.tar.gz
chromium_src-1fcffab820c3a870d0c1b2baa71184984c2c7cc2.tar.bz2
Evil wallpaper hack to hide a crash when going back from an interstitial and then renavigating very quickly.
BUG=2855 Review URL: http://codereview.chromium.org/9330 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4608 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/navigation_controller.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/chrome/browser/navigation_controller.cc b/chrome/browser/navigation_controller.cc
index 77d5269..cc05bc7d 100644
--- a/chrome/browser/navigation_controller.cc
+++ b/chrome/browser/navigation_controller.cc
@@ -929,6 +929,23 @@ void NavigationController::DiscardNonCommittedEntries() {
NavigationEntry* last_entry = GetLastCommittedEntry();
if (last_entry && last_entry->tab_type() != active_contents_->type()) {
TabContents* from_contents = active_contents_;
+ if (from_contents->type() == active_contents_->type()) {
+ // EVIL HACK ALERT! This condition is a wallpaper patch around bug
+ // http://code.google.com/p/chromium/issues/detail?id=2855
+ // See the bug for more, but the short answer is that an old render view
+ // host's "cancel" message will get received by a newer one that happens
+ // to be navigated to the same URL, which will trigger improperly
+ // discarding the pending entry. This will in turn trigger tab contents
+ // collection and other bad things.
+ //
+ // This early return doesn't fix the problem at all, but does prevent the
+
+ // immediate crash. There are very likely to be problems as a result of
+ // the confused state that this generates, so the underlying bug really
+ // needs to be fixed!
+ return;
+ }
+
from_contents->set_is_active(false);
// Switch back to the previous tab contents.