| Index: content/renderer/render_view.cc
|
| diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc
|
| index dd31fb7e922778713effed968a234cb92882269d..c6f39a468f7199ab643314a707a800720e41fd64 100644
|
| --- a/content/renderer/render_view.cc
|
| +++ b/content/renderer/render_view.cc
|
| @@ -854,8 +854,16 @@ bool RenderView::IsBackForwardToStaleEntry(
|
| // Check for whether this entry has been replaced with a new one.
|
| int expected_page_id =
|
| history_page_ids_[params.pending_history_list_offset];
|
| - if (expected_page_id > 0 && params.page_id != expected_page_id)
|
| - return true;
|
| + if (expected_page_id > 0 && params.page_id != expected_page_id) {
|
| + if (params.page_id < expected_page_id)
|
| + return true;
|
| +
|
| + // Otherwise we've removed an earlier entry and should have shifted all
|
| + // entries left. For now, it's ok to lazily update the list.
|
| + // TODO(creis): Notify all live renderers when we remove entries from
|
| + // the front of the list, so that we don't hit this case.
|
| + history_page_ids_[params.pending_history_list_offset] = params.page_id;
|
| + }
|
|
|
| return false;
|
| }
|
|
|