<rdar://problem/8960434> and https://bugs.webkit.org/show_bug.cgi?id=53957
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Feb 2011 00:22:47 +0000 (00:22 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Feb 2011 00:22:47 +0000 (00:22 +0000)
commitf1cd6f30723f80cf73810a5bc2bdacc3e23bf9b4
tree14b0f24207e096498701b14bf8d00f029fff3284
parent5fe6976f2f5f17d8e63e8c518d43941fb1f7ccd2
<rdar://problem/8960434> and https://bugs.webkit.org/show_bug.cgi?id=53957
Crash after incorrectly restoring bogus session state.

Reviewed by Anders Carlsson.

In some cases we're writing an invalid session state for a back/forward list where the current entry is 0
but the number of entries is also 0.
In such cases the current entry should be "NoCurrentEntryIndex."

When we later read this state in, we set ourselves up to crash later.

Amusingly an ASSERT caught this, but we should've rejected it before the ASSERT fired.

* UIProcess/cf/WebBackForwardListCF.cpp:
(WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): Fail the restore if the "current index past the end
  of the list" case occurs, and speculatively bail out of the case where we have no current index but do have a list.
  Also remove the unhelpful ASSERT.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77861 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/cf/WebBackForwardListCF.cpp