<?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>70285</bug_id>
          
          <creation_ts>2011-10-17 16:43:06 -0700</creation_ts>
          <short_desc>Style guide should mention the preference of index over iterator</short_desc>
          <delta_ts>2011-10-21 16:17:55 -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>WebKit Website</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>adamk</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485627</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 16:43:06 -0700</bug_when>
    <thetext>Per discussion on webkit-dev, we should mention that we prefer using index over iterator to go though items in a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485642</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 16:59:05 -0700</bug_when>
    <thetext>https://lists.webkit.org/pipermail/webkit-dev/2011-October/018274.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485643</commentid>
    <comment_count>2</comment_count>
      <attachid>111351</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 17:01:11 -0700</bug_when>
    <thetext>Created attachment 111351
70285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486324</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-18 14:50:39 -0700</bug_when>
    <thetext>Any reviewer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486331</commentid>
    <comment_count>4</comment_count>
      <attachid>111351</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-18 15:02:03 -0700</bug_when>
    <thetext>Comment on attachment 111351
70285

For the index case we chose to evaluate size every time through the loop. For the iterator case we chose to cache the end iterator. That’s an arbitrary difference not related to index vs. iterator. I think a local variable named size would be a better way to do things.

I don’t think this makes it clear enough that there are data structures where iterators are present, but indexing is not. Nor does it answer the question of why we offer iterators if indexing are preferred.

Also, this doesn’t contain any of the rationale; perhaps it should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487093</commentid>
    <comment_count>5</comment_count>
      <attachid>111690</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-19 16:06:19 -0700</bug_when>
    <thetext>Created attachment 111690
Updated per comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488573</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-21 12:50:46 -0700</bug_when>
    <thetext>Ping reviewers again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488681</commentid>
    <comment_count>7</comment_count>
      <attachid>111690</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-21 14:57:44 -0700</bug_when>
    <thetext>Comment on attachment 111690
Updated per comment

View in context: https://bugs.webkit.org/attachment.cgi?id=111690&amp;action=review

&gt; Websites/webkit.org/coding/coding-style.html:712
&gt; +&lt;li&gt;Prefer index over iterator in Vector iterations for a terse, easier-to-read code, and to avoid accessing freed memory

I don’t see the end of this &lt;li&gt; element.

It’s overselling this technique to say that it avoids accessing freed memory, because using a too high index can still access freed memory.

&gt; Websites/webkit.org/coding/coding-style.html:717
&gt; +size_t frameViewSize = frameViews.size();

frameViewSize is not the right name here. Maybe frameViewsSize or frameViewsCount or size or count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488708</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-21 15:10:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 111690 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111690&amp;action=review
&gt; 
&gt; &gt; Websites/webkit.org/coding/coding-style.html:712
&gt; &gt; +&lt;li&gt;Prefer index over iterator in Vector iterations for a terse, easier-to-read code, and to avoid accessing freed memory
&gt; 
&gt; I don’t see the end of this &lt;li&gt; element.

It&apos;s the pattern used throughout the file. I should probably correct that once for all.

&gt; It’s overselling this technique to say that it avoids accessing freed memory, because using a too high index can still access freed memory.

Okay, I&apos;ll remove that.

&gt; &gt; Websites/webkit.org/coding/coding-style.html:717
&gt; &gt; +size_t frameViewSize = frameViews.size();
&gt; 
&gt; frameViewSize is not the right name here. Maybe frameViewsSize or frameViewsCount or size or count.

Oops, typo. It was supposed to be frameViewsSize but I guess frameViewsCount sounds better. Will change before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488752</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-21 16:17:55 -0700</bug_when>
    <thetext>Committed r98166: &lt;http://trac.webkit.org/changeset/98166&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111351</attachid>
            <date>2011-10-17 17:01:11 -0700</date>
            <delta_ts>2011-10-19 16:06:14 -0700</delta_ts>
            <desc>70285</desc>
            <filename>bug-70285-20111017170110.patch</filename>
            <type>text/plain</type>
            <size>1640</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzY3NikKKysrIFdlYnNpdGVzL3dl
YmtpdC5vcmcvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEt
MTAtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3R5bGUg
Z3VpZGUgc2hvdWxkIG1lbnRpb24gdGhlIHByZWZlcmVuY2Ugb2YgaW5kZXggb3ZlciBpdGVyYXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAyODUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXIgZGlz
Y3Vzc2lvbiBvbiBodHRwczovL2xpc3RzLndlYmtpdC5vcmcvcGlwZXJtYWlsL3dlYmtpdC1kZXYv
MjAxMS1PY3RvYmVyLzAxODI3NC5odG1sLAorICAgICAgICB3ZSBwcmVmZXIgaW5kZXggb3ZlciBp
dGVyYXRvcnMuCisKKyAgICAgICAgKiBjb2RpbmcvY29kaW5nLXN0eWxlLmh0bWw6CisKIDIwMTEt
MTAtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGEg
dHlwbyBwb2ludGVkIGJ5IFNhbSAoV2VpbmlnKS4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcv
Y29kaW5nL2NvZGluZy1zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5v
cmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCShyZXZpc2lvbiA5NzYzNSkKKysrIFdlYnNpdGVz
L3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03
MDgsNiArNzA4LDIxIEBAIE15Q2xhc3M6Ok15Q2xhc3MoRG9jdW1lbnQqIGRvYykgOiBNeVN1cGUK
IAogTXlPdGhlckNsYXNzOjpNeU90aGVyQ2xhc3MoKSA6IE15U3VwZXJDbGFzcygpIHt9CiA8L3By
ZT4KKworPGxpPlByZWZlciBpbmRleCBvdmVyIGl0ZXJhdG9yIGluIGxvb3BzLgorCis8aDQgY2xh
c3M9InJpZ2h0Ij5SaWdodDo8L2g0PgorPHByZSBjbGFzcz0iY29kZSI+Citmb3IgKHNpemVfdCBp
ID0gaTsgaSAmbHQ7IGZyYW1lVmlld3Muc2l6ZSgpOyArK2kpCisgICAgZnJhbWVWaWV3c1tpXS0+
dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworPC9wcmU+CisKKzxoNCBj
bGFzcz0id3JvbmciPldyb25nOjwvaDQ+Cis8cHJlIGNsYXNzPSJjb2RlIj4KK2NvbnN0IFZlY3Rv
ciZsdDtSZWZQdHImbHQ7RnJhbWVWaWV3Jmd0OyAmZ3Q7OjppdGVyYXRvciBlbmQgPSBmcmFtZVZp
ZXdzLmVuZCgpOworZm9yIChWZWN0b3ImbHQ7UmVmUHRyJmx0O0ZyYW1lVmlldyZndDsgJmd0Ozo6
aXRlcmF0b3IgaXQgPSBmcmFtZVZpZXdzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAo
Kml0KS0mZ3Q7dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworPC9wcmU+
CiA8L29sPgogCiA8aDM+UG9pbnRlcnMgYW5kIFJlZmVyZW5jZXM8L2gzPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111690</attachid>
            <date>2011-10-19 16:06:19 -0700</date>
            <delta_ts>2011-10-21 14:57:44 -0700</delta_ts>
            <desc>Updated per comment</desc>
            <filename>bug-70285-20111019160618.patch</filename>
            <type>text/plain</type>
            <size>1851</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzgzMCkKKysrIFdlYnNpdGVzL3dl
YmtpdC5vcmcvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEt
MTAtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3R5bGUg
Z3VpZGUgc2hvdWxkIG1lbnRpb24gdGhlIHByZWZlcmVuY2Ugb2YgaW5kZXggb3ZlciBpdGVyYXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAyODUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXIgZGlz
Y3Vzc2lvbiBvbiBodHRwczovL2xpc3RzLndlYmtpdC5vcmcvcGlwZXJtYWlsL3dlYmtpdC1kZXYv
MjAxMS1PY3RvYmVyLzAxODI3NC5odG1sLAorICAgICAgICB3ZSBwcmVmZXIgaW5kZXggb3ZlciBp
dGVyYXRvcnMuCisKKyAgICAgICAgKiBjb2RpbmcvY29kaW5nLXN0eWxlLmh0bWw6CisKIDIwMTEt
MTAtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGEg
dHlwbyBwb2ludGVkIGJ5IFNhbSAoV2VpbmlnKS4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcv
Y29kaW5nL2NvZGluZy1zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5v
cmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCShyZXZpc2lvbiA5NzgzMCkKKysrIFdlYnNpdGVz
L3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03
MDgsNiArNzA4LDIzIEBAIE15Q2xhc3M6Ok15Q2xhc3MoRG9jdW1lbnQqIGRvYykgOiBNeVN1cGUK
IAogTXlPdGhlckNsYXNzOjpNeU90aGVyQ2xhc3MoKSA6IE15U3VwZXJDbGFzcygpIHt9CiA8L3By
ZT4KKworPGxpPlByZWZlciBpbmRleCBvdmVyIGl0ZXJhdG9yIGluIFZlY3RvciBpdGVyYXRpb25z
IGZvciBhIHRlcnNlLCBlYXNpZXItdG8tcmVhZCBjb2RlLCBhbmQgdG8gYXZvaWQgYWNjZXNzaW5n
IGZyZWVkIG1lbW9yeQord2hlbiBlbGVtZW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcg
dGhlIGl0ZXJhdGlvbiBpbnRlbnRpb25hbGx5IG9yIHVuaW50ZW50aW9uYWxseS4KKworPGg0IGNs
YXNzPSJyaWdodCI+UmlnaHQ6PC9oND4KKzxwcmUgY2xhc3M9ImNvZGUiPgorc2l6ZV90IGZyYW1l
Vmlld1NpemUgPSBmcmFtZVZpZXdzLnNpemUoKTsKK2ZvciAoc2l6ZV90IGkgPSBpOyBpICZsdDsg
ZnJhbWVWaWV3U2l6ZTsgKytpKQorICAgIGZyYW1lVmlld3NbaV0tPnVwZGF0ZUxheW91dEFuZFN0
eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKKzwvcHJlPgorCis8aDQgY2xhc3M9Indyb25nIj5Xcm9u
Zzo8L2g0PgorPHByZSBjbGFzcz0iY29kZSI+Citjb25zdCBWZWN0b3ImbHQ7UmVmUHRyJmx0O0Zy
YW1lVmlldyZndDsgJmd0Ozo6aXRlcmF0b3IgZW5kID0gZnJhbWVWaWV3cy5lbmQoKTsKK2ZvciAo
VmVjdG9yJmx0O1JlZlB0ciZsdDtGcmFtZVZpZXcmZ3Q7ICZndDs6Oml0ZXJhdG9yIGl0ID0gZnJh
bWVWaWV3cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgKCppdCktJmd0O3VwZGF0ZUxh
eW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKKzwvcHJlPgogPC9vbD4KIAogPGgzPlBv
aW50ZXJzIGFuZCBSZWZlcmVuY2VzPC9oMz4K
</data>
<flag name="review"
          id="109580"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>