<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>15212</bug_id>
          
          <creation_ts>2007-09-14 07:22:57 -0700</creation_ts>
          <short_desc>Useless checking for Item in FrameLoader::goBackOrForward(int distance)</short_desc>
          <delta_ts>2007-10-14 04:59:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>History</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maxime BRITTO">mbritto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>sroret</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487</commentid>
    <comment_count>0</comment_count>
    <who name="Maxime BRITTO">mbritto</who>
    <bug_when>2007-09-14 07:22:57 -0700</bug_when>
    <thetext>There is no need to check if there is an item at this distance because the check has already been performed in a previously :

This is the piece of code I&apos;m talking about :
------------------------------------
    HistoryItem* item = list-&gt;itemAtIndex(distance);
    if (!item) {
        if (distance &gt; 0) {
            int forwardListCount = list-&gt;forwardListCount();
            if (forwardListCount &gt; 0) 
                item = list-&gt;itemAtIndex(forwardListCount);
        } else {
            int backListCount = list-&gt;forwardListCount();
            if (backListCount &gt; 0)
                item = list-&gt;itemAtIndex(-backListCount);
        }
    }


There are three calls for FrameLoader::goBackOrForward(int distance) :
-----------------------------------------------------------
  1 - From FrameLoader::scheduleHistoryNavigation(int steps)
          -&gt; which checks before the call if the step is &quot;reachable&quot; with canGoBackOrForward(steps).
          -&gt; if the step is unreachable, goBackOrForward() isn&apos;t called at all

  2 - From FrameLoader::redirectionTimerFired(Timer&lt;FrameLoader&gt;*)
          -&gt; in case we have a ScheduledRedirection::historyNavigation
          -&gt; a ScheduledRedirection::historyNavigation can only be created from scheduleHistoryNavigation() (see point 1)

  3 - From ContextMenuController::contextMenuItemSelected(ContextMenuItem* item)
          -&gt; the context menu choice &quot;back&quot; or &quot;forward&quot; is disabled if there no previous or next item

-

To sum up, I don&apos;t know how the item (from HistoryItem* item = list-&gt;itemAtIndex(distance);) in goBackOrForward() could be null. 
Moreover there is something wrong in this useless part of code : int backListCount = list-&gt;forwardListCount();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484</commentid>
    <comment_count>1</comment_count>
      <attachid>16290</attachid>
    <who name="Maxime BRITTO">mbritto</who>
    <bug_when>2007-09-14 07:51:28 -0700</bug_when>
    <thetext>Created attachment 16290
proposed patch

I wasn&apos;t sure if I had to put an ASSERT for the item, so I didn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57061</commentid>
    <comment_count>2</comment_count>
      <attachid>16397</attachid>
    <who name="Maxime BRITTO">mbritto</who>
    <bug_when>2007-09-26 02:31:24 -0700</bug_when>
    <thetext>Created attachment 16397
modified patch

After the talk mitzpettel and I had, we decided to let the check for the reachable item in the function because it&apos;s more conveniant for the future updates.
Though I added an assert to help future debug.
I let that last check to avoid an eventually crash on release versions :
    if (item)
        page-&gt;goToItem(item, FrameLoadTypeIndexedBackForward);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57062</commentid>
    <comment_count>3</comment_count>
      <attachid>16397</attachid>
    <who name="">mitz</who>
    <bug_when>2007-09-26 03:07:31 -0700</bug_when>
    <thetext>Comment on attachment 16397
modified patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58493</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-14 04:59:29 -0700</bug_when>
    <thetext>Landed in r26588.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16290</attachid>
            <date>2007-09-14 07:51:28 -0700</date>
            <delta_ts>2007-09-26 02:31:24 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>20070914mBrittoBug15212.txt</filename>
            <type>text/plain</type>
            <size>1581</size>
            <attacher name="Maxime BRITTO">mbritto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTU2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDctMDktMTQgIE1heGltZSBCcml0dG8gIDxtYnJpdHRvQHBsZXlv
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
dWcgMTUyMTIgOiBSZW1vdmluZyBhIHVzZWxlc3MgcGFydCBvZiBjb2RlIGluIHRoZSBnb0JhY2tP
ckZvcndhcmQoKSBmdW5jdGlvbi4KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUyMTIKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Z29CYWNrT3JGb3J3YXJkKToKKwogMjAwNy0w
OS0xNCAgU3ZlbiBIZXJ6YmVyZyAgPHN2ZW5AaW1lbmRpby5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1
NTYxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDExLDIwICsxNDExLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Z29CYWNrT3JGb3J3YXJkKGlu
dCBkaQogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEhpc3RvcnlJ
dGVtKiBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgoZGlzdGFuY2UpOwotICAgIGlmICghaXRlbSkg
ewotICAgICAgICBpZiAoZGlzdGFuY2UgPiAwKSB7Ci0gICAgICAgICAgICBpbnQgZm9yd2FyZExp
c3RDb3VudCA9IGxpc3QtPmZvcndhcmRMaXN0Q291bnQoKTsKLSAgICAgICAgICAgIGlmIChmb3J3
YXJkTGlzdENvdW50ID4gMCkgCi0gICAgICAgICAgICAgICAgaXRlbSA9IGxpc3QtPml0ZW1BdElu
ZGV4KGZvcndhcmRMaXN0Q291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW50
IGJhY2tMaXN0Q291bnQgPSBsaXN0LT5mb3J3YXJkTGlzdENvdW50KCk7Ci0gICAgICAgICAgICBp
ZiAoYmFja0xpc3RDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgaXRlbSA9IGxpc3QtPml0ZW1B
dEluZGV4KC1iYWNrTGlzdENvdW50KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoaXRlbSkK
LSAgICAgICAgcGFnZS0+Z29Ub0l0ZW0oaXRlbSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9y
d2FyZCk7CisgICBwYWdlLT5nb1RvSXRlbShsaXN0LT5pdGVtQXRJbmRleChkaXN0YW5jZSksIEZy
YW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWRpcmVjdGlvblRpbWVyRmlyZWQoVGltZXI8RnJhbWVMb2FkZXI+KikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16397</attachid>
            <date>2007-09-26 02:31:24 -0700</date>
            <delta_ts>2007-09-26 03:07:31 -0700</delta_ts>
            <desc>modified patch</desc>
            <filename>20070926mBrittoBug15212b.txt</filename>
            <type>text/plain</type>
            <size>1410</size>
            <attacher name="Maxime BRITTO">mbritto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTc2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDctMDktMjYgIE1heGltZSBCcml0dG8gIDxtYnJpdHRvQHBsZXlv
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggYSB0eXBvIGVycm9yIGluIHRoZSBnb0JhY2tPckZvcndhcmQoKSBmdW5jdGlvbiA6IGNvbmZ1
c2lvbiBiZXR3ZWVuIGZvcndhcmRMaXN0Q291bnQgYW5kIGJhY2tMaXN0Q291bnQgLgorICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMgorCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpnb0JhY2tPckZvcndhcmQpOgorCiAyMDA3LTA5LTI1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0uCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTc2MCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxNCwxMSArMTQxNCwxNCBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpnb0JhY2tPckZvcndhcmQoaW50IGRpCiAgICAgICAgICAgICBpZiAoZm9yd2FyZExp
c3RDb3VudCA+IDApIAogICAgICAgICAgICAgICAgIGl0ZW0gPSBsaXN0LT5pdGVtQXRJbmRleChm
b3J3YXJkTGlzdENvdW50KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGludCBiYWNr
TGlzdENvdW50ID0gbGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOworICAgICAgICAgICAgaW50IGJh
Y2tMaXN0Q291bnQgPSBsaXN0LT5iYWNrTGlzdENvdW50KCk7CiAgICAgICAgICAgICBpZiAoYmFj
a0xpc3RDb3VudCA+IDApCiAgICAgICAgICAgICAgICAgaXRlbSA9IGxpc3QtPml0ZW1BdEluZGV4
KC1iYWNrTGlzdENvdW50KTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaXRl
bSk7IC8vd2Ugc2hvdWxkIG5vdCByZWFjaCB0aGlzIGxpbmUgd2l0aCBhbiBlbXB0eSBiYWNrL2Zv
cndhcmQgbGlzdAorICAgIAogICAgIGlmIChpdGVtKQogICAgICAgICBwYWdlLT5nb1RvSXRlbShp
dGVtLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKIH0K
</data>
<flag name="review"
          id="6903"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>