<?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>31428</bug_id>
          
          <creation_ts>2009-11-12 12:39:18 -0800</creation_ts>
          <short_desc>getElementsByTagName(&quot;div&quot;)[&apos;elementId&apos;] lookup fails if two elements have the same id</short_desc>
          <delta_ts>2009-11-29 17:44:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>5578</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>163017</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-12 12:39:18 -0800</bug_when>
    <thetext>The following test script(partial) failed to work as expected. Other major browsers passed the test.

&lt;body&gt;
&lt;div name=&apos;elem1&apos; id=&apos;attr_value11&apos; attr_name12=&apos;attr_value12&apos;/&gt;
&lt;p   name=&apos;elem4&apos; id=&apos;attr_value21&apos; attr_name42=&apos;attr_value42&apos;/&gt;
&lt;div name=&apos;elem2&apos; id=&apos;attr_value21&apos; attr_name22=&apos;attr_value22&apos;/&gt;
&lt;script&gt;
elems = document.getElementsByTagName(&apos;div&apos;);
elem = elems[&apos;attr_value21&apos;];
shouldBe(&apos;elem.attributes[0].value&apos;, &apos;&quot;elem2&quot;&apos;);
&lt;/script&gt;

The full test case will be added to LayoutTests as fast/dom/Element/id-in-node-list-index01.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163023</commentid>
    <comment_count>1</comment_count>
      <attachid>43091</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-12 13:06:56 -0800</bug_when>
    <thetext>Created attachment 43091
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163478</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-13 13:40:51 -0800</bug_when>
    <thetext>I do not understand the patch or the test case.  Can you please explain better what you&apos;re trying to do here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163492</commentid>
    <comment_count>3</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-13 13:59:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I do not understand the patch or the test case.  Can you please explain better
&gt; what you&apos;re trying to do here?

Sure.
In the test case, I have 3 elements: 2 are &lt;div&gt; and 1 is &lt;p&gt;. The call to document.getElementsByTagName(&apos;div&apos;) should return the 2 &lt;div&gt; elements. Then using Id=&apos;attr_value21&apos; as index should return elem2. The &lt;p&gt; element happens to have the same Id as elem2 and this causes trouble because the optimized code(see below) assumes the uniqueness of Id. Specifically, the &quot;node&quot; returned from getElementById is expected to be elem2, however, it is actually elem4, the &lt;p&gt; element. And the function returns 0. The 2nd part of the following function should always work, though. So in case &quot;node&quot; is not 0, my patch continue on the 2nd part. As the case is rare that a document has duplicated Ids, the performance should be ok.

Node* DynamicNodeList::itemWithName(const AtomicString&amp; elementId) const
{
    if (m_rootNode-&gt;isDocumentNode() || m_rootNode-&gt;inDocument()) {
        Element* node = m_rootNode-&gt;document()-&gt;getElementById(elementId);
        if (node &amp;&amp; nodeMatches(node)) {
            for (Node* p = node-&gt;parentNode(); p; p = p-&gt;parentNode()) {
                if (p == m_rootNode)
                    return node;
            }
        }
        return 0;
    }

    unsigned length = this-&gt;length();
    for (unsigned i = 0; i &lt; length; i++) {
        Node* node = item(i);
        if (node-&gt;isElementNode() &amp;&amp;
static_cast&lt;Element*&gt;(node)-&gt;getIDAttribute() == elementId)
            return node;
    }

    return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166478</commentid>
    <comment_count>4</comment_count>
      <attachid>43091</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-25 08:53:21 -0800</bug_when>
    <thetext>Comment on attachment 43091
fix patch

cshu and I spoke over IRC.  The fix looks correct, but we need to better communicate here why it&apos;s correct.

1.  The test case needs to be cleaned up to use better variable naming, and probably just shorter in general.  We could consider converting it to a normal &quot;script-test&quot;, although that&apos;s not required.  http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

2.  We need information on why this change is correct.  Does this new behavior conform to a spec?  Does this new behavior match FF/IE?  If the answer to either of those questions is &quot;no&quot; we need to know why.

Basically we just need to make this patch super-easy to understand, and thus review.  Once that&apos;s done, I think this will be a very quick r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166521</commentid>
    <comment_count>5</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-25 12:03:05 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 43091 [details])
&gt; cshu and I spoke over IRC.  The fix looks correct, but we need to better
&gt; communicate here why it&apos;s correct.
&gt; 
&gt; 1.  The test case needs to be cleaned up to use better variable naming, and
&gt; probably just shorter in general.  We could consider converting it to a normal
&gt; &quot;script-test&quot;, although that&apos;s not required. 
&gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

Please review the 2nd patch with test case updates.
 
&gt; 2.  We need information on why this change is correct.  Does this new behavior
&gt; conform to a spec?  Does this new behavior match FF/IE?  If the answer to
&gt; either of those questions is &quot;no&quot; we need to know why.
 
1. In the test case, the id is unique in the retrieved node list. The new behavior returns the correct node while the current behavior returns null. So the new behavior should conform to the spec.
2. The new behavior matches both Firefox 3.5.5 and IE8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166522</commentid>
    <comment_count>6</comment_count>
      <attachid>43862</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-25 12:04:31 -0800</bug_when>
    <thetext>Created attachment 43862
update test case based on Eric&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167105</commentid>
    <comment_count>7</comment_count>
      <attachid>43862</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 14:03:54 -0800</bug_when>
    <thetext>Comment on attachment 43862
update test case based on Eric&apos;s review

I don&apos;t see why you use the global variable &apos;elem&apos;:
 var elem = elems[&apos;id1&apos;];
 20 shouldBe(&apos;elem.getAttribute(&quot;name&quot;)&apos;, &apos;&quot;name1&quot;&apos;);

would be more clear as:
shouldBe(&apos;elems[&quot;id2&quot;].getAttribute(&quot;name&quot;)&apos;, &apos;&quot;name1&quot;&apos;);

The old behavior was to return null from elems[&apos;id1&apos;] correct?

generally we try to make comments into complete sentences with periods:

 134         // in case multiple nodes with same name, fall through

// In the case of multiple nodes with the same name, just fall through.


Your ChangeLog comment isn&apos;t quite english. :)  Understandable as I&apos;m assuming english isn&apos;t your mother tongue.

5         Continue search for matching node in case multiple nodes with
 6         the same Id exist.

Continue to search for matching nodes in the case where multiple nodes have the same id.

I think we should go one more round.  In general this looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167118</commentid>
    <comment_count>8</comment_count>
      <attachid>43995</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-29 15:53:09 -0800</bug_when>
    <thetext>Created attachment 43995
patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167123</commentid>
    <comment_count>9</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-29 16:02:23 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 43862 [details])
&gt; I don&apos;t see why you use the global variable &apos;elem&apos;:
&gt;  var elem = elems[&apos;id1&apos;];
&gt;  20 shouldBe(&apos;elem.getAttribute(&quot;name&quot;)&apos;, &apos;&quot;name1&quot;&apos;);
&gt; would be more clear as:
&gt; shouldBe(&apos;elems[&quot;id2&quot;].getAttribute(&quot;name&quot;)&apos;, &apos;&quot;name1&quot;&apos;);
&gt; The old behavior was to return null from elems[&apos;id1&apos;] correct?

elems[&quot;id1&quot;] works fine before and after my change.
elems[&quot;id2&quot;] failed to work before as both elem2 and elem3 have the same id, &quot;id2&quot;.

Thanks for correcting my English, too. :) I guess it&apos;s good I can improve both my technical skills and my English during this review process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167134</commentid>
    <comment_count>10</comment_count>
      <attachid>43995</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 16:51:29 -0800</bug_when>
    <thetext>Comment on attachment 43995
patch 3

YAY!  Thanks for all your patience!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167135</commentid>
    <comment_count>11</comment_count>
      <attachid>43995</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-29 17:02:51 -0800</bug_when>
    <thetext>Comment on attachment 43995
patch 3

Clearing flags on attachment: 43995

Committed r51471: &lt;http://trac.webkit.org/changeset/51471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167136</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-29 17:02:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167144</commentid>
    <comment_count>13</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-29 17:44:44 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 43995 [details])
&gt; YAY!  Thanks for all your patience!

Eric, thanks very much for reviewing my patch on Sunday night!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43091</attachid>
            <date>2009-11-12 13:06:56 -0800</date>
            <delta_ts>2009-11-25 12:04:31 -0800</delta_ts>
            <desc>fix patch</desc>
            <filename>bug31428_1.patch</filename>
            <type>text/plain</type>
            <size>3611</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDg4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMTIgIFNodSBDaGFuZyAgPENoYW5nLlNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29u
dGludWUgc2VhcmNoIGZvciBtYXRjaGluZyBub2RlIGluIGNhc2UgbXVsdGlwbGUgbm9kZXMgd2l0
aAorICAgICAgICB0aGUgc2FtZSBJZCBleGlzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDI4CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRWxl
bWVudC9pZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS5odG1sCisKKyAgICAgICAgKiBkb20vRHluYW1p
Y05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdDo6aXRlbVdp
dGhOYW1lKToKKwogMjAwOS0xMS0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJD
b3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0R5
bmFtaWNOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDUwODg2KQorKysgV2ViQ29yZS9kb20vRHluYW1p
Y05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw5IEBAIE5vZGUqIER5
bmFtaWNOb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnMKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAvLyBpbiBj
YXNlIG11bHRpcGxlIG5vZGVzIHdpdGggc2FtZSBuYW1lLCBmYWxsIHRocm91Z2gKICAgICB9CiAK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDUwODg2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMDktMTEtMTIgIFNodSBDaGFuZyAgPENoYW5nLlNodUBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB1c2lu
ZyBJZCBhcyBpbmRleCBvZiBub2RlIGxpc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQyOAorCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9p
ZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEuaHRtbDogQWRkZWQuCisKIDIw
MDktMTEtMTIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0Vs
ZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9p
ZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTIgQEAKK1Rlc3QgdXNpbmcgaWQgYXMgaW5kZXggb2Ygbm9kZSBsaXN0CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGVsZW0uYXR0cmlidXRlc1swXS52YWx1ZSBpcyAi
ZWxlbTEiCitQQVNTIGVsZW0uYXR0cmlidXRlc1swXS52YWx1ZSBpcyAiZWxlbTIiCitQQVNTIGVs
ZW0gaXMgdW5kZWZpbmVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9pZC1pbi1ub2Rl
LWxpc3QtaW5kZXgwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0Vs
ZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCis8ZGl2IG5hbWU9J2VsZW0xJyBpZD0nYXR0cl92YWx1ZTExJyBhdHRyX25h
bWUxMj0nYXR0cl92YWx1ZTEyJy8+Cis8cCAgIG5hbWU9J2VsZW00JyBpZD0nYXR0cl92YWx1ZTIx
JyBhdHRyX25hbWU0Mj0nYXR0cl92YWx1ZTQyJy8+Cis8ZGl2IG5hbWU9J2VsZW0yJyBpZD0nYXR0
cl92YWx1ZTIxJyBhdHRyX25hbWUyMj0nYXR0cl92YWx1ZTIyJy8+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdCB1c2luZyBpZCBhcyBpbmRleCBvZiBub2RlIGxpc3QiKTsKKwordmFyIGVs
ZW1zOwordmFyIGVsZW07CisKK2VsZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2RpdicpOworCitlbGVtID0gZWxlbXNbJ2F0dHJfdmFsdWUxMSddOworc2hvdWxkQmUoJ2VsZW0u
YXR0cmlidXRlc1swXS52YWx1ZScsICciZWxlbTEiJyk7CisKK2VsZW0gPSBlbGVtc1snYXR0cl92
YWx1ZTIxJ107CitzaG91bGRCZSgnZWxlbS5hdHRyaWJ1dGVzWzBdLnZhbHVlJywgJyJlbGVtMiIn
KTsKKworZWxlbSA9IGVsZW1zWydhdHRyX3ZhbHVlMjInXTsKK3Nob3VsZEJlKCdlbGVtJywgJ3Vu
ZGVmaW5lZCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="24749"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43862</attachid>
            <date>2009-11-25 12:04:31 -0800</date>
            <delta_ts>2009-11-29 15:53:09 -0800</delta_ts>
            <desc>update test case based on Eric&apos;s review</desc>
            <filename>bug31428_2.patch</filename>
            <type>text/plain</type>
            <size>3449</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTM5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMTIgIFNodSBDaGFuZyAgPENoYW5nLlNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29u
dGludWUgc2VhcmNoIGZvciBtYXRjaGluZyBub2RlIGluIGNhc2UgbXVsdGlwbGUgbm9kZXMgd2l0
aAorICAgICAgICB0aGUgc2FtZSBJZCBleGlzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDI4CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRWxl
bWVudC9pZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS5odG1sCisKKyAgICAgICAgKiBkb20vRHluYW1p
Y05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdDo6aXRlbVdp
dGhOYW1lKToKKwogMjAwOS0xMS0yNSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRl
eDogV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCShyZXZpc2lvbiA1MDg4NikKKysrIFdlYkNvcmUvZG9t
L0R5bmFtaWNOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksOSBAQCBO
b2RlKiBEeW5hbWljTm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZShjb25zCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBub2RlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
Ly8gaW4gY2FzZSBtdWx0aXBsZSBub2RlcyB3aXRoIHNhbWUgbmFtZSwgZmFsbCB0aHJvdWdoCiAg
ICAgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1MTM5MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDA5LTExLTI1ICBTaHUgQ2hhbmcgIDxDaGFuZy5TaHVAbm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3QgdXNpbmcgSWQgYXMgaW5kZXggb2Ygbm9kZSBsaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0MjgKKworICAgICAgICAqIGZhc3QvZG9tL0Vs
ZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9FbGVtZW50L2lkLWluLW5vZGUtbGlzdC1pbmRleDAxLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTExLTI1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFA
Y29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFdlIGRvIG5vdCBoYXZlIGEgc3RyYXRlZ3kgaW4g
cGxhY2UgdG8gbWltaWNrIHRoZSBvdXRwdXQgZm9yIGxvYWQKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWlu
ZGV4MDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
RWxlbWVudC9pZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgdXNpbmcgaWQgYXMgaW5kZXggb2Ygbm9kZSBsaXN0CisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGVsZW0uZ2V0QXR0cmlidXRlKCJu
YW1lIikgaXMgIm5hbWUxIgorUEFTUyBlbGVtLmdldEF0dHJpYnV0ZSgibmFtZSIpIGlzICJuYW1l
MiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2lkLWluLW5vZGUtbGlzdC1pbmRleDAx
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9pZC1pbi1u
b2RlLWxpc3QtaW5kZXgwMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9pZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxkaXYgbmFtZT0nbmFtZTEnIGlkPSdpZDEnLz4KKzxwICAgbmFtZT0nbmFtZTMnIGlkPSdpZDIn
Lz4KKzxkaXYgbmFtZT0nbmFtZTInIGlkPSdpZDInLz4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0IHVzaW5nIGlkIGFzIGluZGV4IG9mIG5vZGUgbGlzdCIpOworCit2YXIgZWxlbXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7CisKK3ZhciBlbGVtID0gZWxlbXNb
J2lkMSddOworc2hvdWxkQmUoJ2VsZW0uZ2V0QXR0cmlidXRlKCJuYW1lIiknLCAnIm5hbWUxIicp
OworCitlbGVtID0gZWxlbXNbJ2lkMiddOworc2hvdWxkQmUoJ2VsZW0uZ2V0QXR0cmlidXRlKCJu
YW1lIiknLCAnIm5hbWUyIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="25606"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43995</attachid>
            <date>2009-11-29 15:53:09 -0800</date>
            <delta_ts>2009-11-29 17:02:51 -0800</delta_ts>
            <desc>patch 3</desc>
            <filename>bug31428_3.patch</filename>
            <type>text/plain</type>
            <size>3455</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTM5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMTIgIFNodSBDaGFuZyAgPENoYW5nLlNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29u
dGludWUgdG8gc2VhcmNoIGZvciBtYXRjaGluZyBub2RlIGluIHRoZSBjYXNlIHdoZXJlIG11bHRp
cGxlIG5vZGVzCisgICAgICAgIGhhdmUgdGhlIHNhbWUgaWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQyOAorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEuaHRtbAorCisgICAgICAgICogZG9t
L0R5bmFtaWNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljTm9kZUxpc3Q6
Oml0ZW1XaXRoTmFtZSk6CisKIDIwMDktMTEtMjUgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHlu
LnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KSW5kZXg6IFdlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAkocmV2aXNpb24gNTA4ODYpCisrKyBXZWJD
b3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5
LDkgQEAgTm9kZSogRHluYW1pY05vZGVMaXN0OjppdGVtV2l0aE5hbWUoY29ucwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIG11bHRpcGxlIG5vZGVzIHdpdGggdGhlIHNhbWUgbmFt
ZSwganVzdCBmYWxsIHRocm91Z2guCiAgICAgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhp
cy0+bGVuZ3RoKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTM5MCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA5LTExLTI1ICBTaHUg
Q2hhbmcgIDxDaGFuZy5TaHVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdXNpbmcgSWQgYXMgaW5kZXggb2Ygbm9kZSBsaXN0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0MjgK
KworICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9FbGVtZW50L2lkLWluLW5vZGUt
bGlzdC1pbmRleDAxLmh0bWw6IEFkZGVkLgorCiAyMDA5LTExLTI1ICBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFdlIGRv
IG5vdCBoYXZlIGEgc3RyYXRlZ3kgaW4gcGxhY2UgdG8gbWltaWNrIHRoZSBvdXRwdXQgZm9yIGxv
YWQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWlu
ZGV4MDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0Vs
ZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9pZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgdXNpbmcgaWQg
YXMgaW5kZXggb2Ygbm9kZSBsaXN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGVsZW1zWyJpZDEiXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSBpcyAibmFtZTEiCitQQVNTIGVs
ZW1zWyJpZDIiXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSBpcyAibmFtZTIiCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRWxlbWVudC9pZC1pbi1ub2RlLWxpc3QtaW5kZXgwMS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaWQtaW4tbm9kZS1saXN0LWluZGV4MDEu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaWQtaW4t
bm9kZS1saXN0LWluZGV4MDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IG5hbWU9J25hbWUx
JyBpZD0naWQxJy8+Cis8cCAgIG5hbWU9J25hbWUzJyBpZD0naWQyJy8+Cis8ZGl2IG5hbWU9J25h
bWUyJyBpZD0naWQyJy8+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB1c2luZyBpZCBh
cyBpbmRleCBvZiBub2RlIGxpc3QiKTsKKwordmFyIGVsZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2RpdicpOworCitzaG91bGRCZSgnZWxlbXNbImlkMSJdLmdldEF0dHJpYnV0
ZSgibmFtZSIpJywgJyJuYW1lMSInKTsKK3Nob3VsZEJlKCdlbGVtc1siaWQyIl0uZ2V0QXR0cmli
dXRlKCJuYW1lIiknLCAnIm5hbWUyIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>