<?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>3677</bug_id>
          
          <creation_ts>2005-06-23 05:47:32 -0700</creation_ts>
          <short_desc>Safari fail to access a second time an element whose content was dynamically modified.</short_desc>
          <delta_ts>2005-12-01 00:48:31 -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>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.3</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.fafnirden.com/tmp/safari_bug/test.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Christen">oliver.christen</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12917</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Christen">oliver.christen</who>
    <bug_when>2005-06-23 05:47:32 -0700</bug_when>
    <thetext>When one modify the content of an element dynamically using either DOM functions
or innerHTML property (via javascript), the element content is acceded correctly
the first time the script run. But on the second run, Safari fail to access the
(previously) modified content and report it as being Null. Meaning its not
possible to modify again the same element&apos;s content.

see url provided for details of the script and live exemple.

The problem occure on Safari 1.2 and 1.3 (not tested on 2.0, as i dont have it).

Script work fine with:
[win] Mozilla/Firefox/Opera/IE6
[linux] Firefox/Konkeror/Epiphany
[mac] Firefox/NS7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12936</commentid>
    <comment_count>1</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-06-23 09:52:34 -0700</bug_when>
    <thetext>Bug confirmed, it does work in firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13012</commentid>
    <comment_count>2</comment_count>
      <attachid>2610</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-23 17:25:42 -0700</bug_when>
    <thetext>Created attachment 2610
Improve handling of duplicate ids

Turns out that the problem is because the document contains two elements with
the same id for a short while. When one element is removed, the id table is not
being updated. Here&apos;s a patch that fixes it.

I&apos;m a little concerned with always inserting a count value of 1 in the id count
table, but that shouldn&apos;t be too much overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13016</commentid>
    <comment_count>3</comment_count>
      <attachid>2610</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-23 22:48:24 -0700</bug_when>
    <thetext>Comment on attachment 2610
Improve handling of duplicate ids

The usual way to handle something where there&apos;s a cache is to make the member
mutable rather than making the method non-const. I suggest putting mutable in
from of the m_idCount declaration, and leaving the methods const.

In DocumentImpl::getElementById, you should use qId when calling find on
m_elementsById.

The code that checks the ID of an element should call hasID before calling
getAttribute(ATTR_ID); it&apos;s more efficient that way since most elements don&apos;t
have IDs.

I think it&apos;s a little strange to use a QDict&lt;int&gt;, but actually store the
integers as pointers. Maybe QDict&lt;void&gt; would be a better way to declare it for
now. And later we should change it to an actual integer dictionary.

This:

+	 int idCount;
+	 if ((idCount = (int)m_idCount.find(qId))) {

would be better written like this:

	if (int idCount = (int)m_idCount.find(qId)) {

But instead, I think the code should assert that an idCount is found. If it&apos;s
not, we have an internal inconsistency error and I&apos;d like to drop into the
debugger. It&apos;s probably best to put the remove code in an &quot;if (idCount &lt;= 1)&quot;
and then assert that the count is 1 in that branch. Or something similar and
equivalent.

Glad you used the strategy I suggested to fix the bug; I think this is simple
and will be nice and efficient.

One further idea about how to make m_idCount smaller that would make the code
only slightly more complex:

The m_idCount dictionary could hold counts that do not include the one in
m_elementsById. Thus we&apos;d only bump the count by 1 if there was already an
element in m_elementsById, and we&apos;d only decrement if it&apos;s an element other
than the one in m_elementsById being removed. Also, when an element was found
and put into m_elementsById, we would decrement the count.

The benefit here is that the m_idCount table would then be empty almost all the
time; we could even have the member variable be a pointer and allocate it only
when needed. Documents without duplicate IDs would have less overhead. Just an
idea -- the existing code is fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13025</commentid>
    <comment_count>4</comment_count>
      <attachid>2616</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-24 01:29:17 -0700</bug_when>
    <thetext>Created attachment 2616
Address comments

I implemented your idea of making the count table smaller. It&apos;s not possible to
use a void dict since the QDict destructor (optionally) deletes the pointer,
and you can&apos;t delete a void pointer.

Maciej told me he used a char QDict for a similar integer-in-pointer hack so I
did the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13085</commentid>
    <comment_count>5</comment_count>
      <attachid>2616</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-24 08:29:55 -0700</bug_when>
    <thetext>Comment on attachment 2616
Address comments

The code in DocumentImpl::getElementById says &quot;(char *)idCount - 1&quot; in a place
where it should say &quot;(char *)(idCount - 1)&quot;. That will work, but only because
pointer arithmetic and integer arithmetic happen to be the same in this case.



I&apos;m going to mark this r=me, although I think we should make that change.

I wondered at first whether m_accessKeyDictValid needed to be set in the
getElementById function. Then I realized that I don&apos;t understand the code
setting m_accessKeyDictValid at all. Why on earth does the presence or absence
of an ID have anything to do with the validity of the access key dictionary?

Clearly this patch makes things no worse in that respect, but I&apos;m pretty sure
this points to a bug in the access key support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13526</commentid>
    <comment_count>6</comment_count>
      <attachid>2616</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-29 22:14:32 -0700</bug_when>
    <thetext>Comment on attachment 2616
Address comments

I just realized that this bug does not have a suitable layout test. The bug fix
is great, but I&apos;m going to have to mark this &quot;review-&quot; until we have a layout
test. I though the original test.html could be used as a layout test, but I was
mistaken -- it&apos;s too complicated, and requires user input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13531</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-30 00:35:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 2616 [edit])
&gt; I just realized that this bug does not have a suitable layout test. The bug fix
&gt; is great, but I&apos;m going to have to mark this &quot;review-&quot; until we have a layout
&gt; test. I though the original test.html could be used as a layout test, but I was
&gt; mistaken -- it&apos;s too complicated, and requires user input.
&gt; 

+	layout-tests/fast/dom/ids/duplicate-ids-expected.txt: Added.
+	layout-tests/fast/dom/ids/duplicate-ids.html: Added.
+	layout-tests/fast/dom/ids/switch-children-expected.txt: Added.
+	layout-tests/fast/dom/ids/switch-children.html: Added.

These are in the patch. I guess they can be improved to specify what&apos;s being tested and the expected 
outcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14436</commentid>
    <comment_count>8</comment_count>
      <attachid>2923</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-07-12 05:24:26 -0700</bug_when>
    <thetext>Created attachment 2923
Improve test case

Here&apos;s a new patch with an improved test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14614</commentid>
    <comment_count>9</comment_count>
      <attachid>2923</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-07-13 20:06:01 -0700</bug_when>
    <thetext>Comment on attachment 2923
Improve test case

r=me since Darin already reviewed and now there is a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24014</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Christen">oliver.christen</who>
    <bug_when>2005-11-14 02:40:30 -0800</bug_when>
    <thetext>it seems the bug still exist on safari Build 312.3.1, is that normal ? Will the
bug be fixed in a futur released version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24830</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-29 02:11:53 -0800</bug_when>
    <thetext>Anders is a commiter, so I&apos;ll leave this one for him to commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25227</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-11-30 10:27:23 -0800</bug_when>
    <thetext>This was committed to ToT a long time ago; closing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25258</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Christen">oliver.christen</who>
    <bug_when>2005-11-30 23:11:26 -0800</bug_when>
    <thetext>but the bug still exist on safari Build 312.3.1, is that really normal ?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25267</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-12-01 00:36:12 -0800</bug_when>
    <thetext>Yes; AFAIK it&apos;s up to Apple to merge the changes back to previous versions of WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25271</commentid>
    <comment_count>15</comment_count>
    <who name="Oliver Christen">oliver.christen</who>
    <bug_when>2005-12-01 00:48:31 -0800</bug_when>
    <thetext>who should i bug for that ?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2610</attachid>
            <date>2005-06-23 17:25:42 -0700</date>
            <delta_ts>2005-06-24 01:29:17 -0700</delta_ts>
            <desc>Improve handling of duplicate ids</desc>
            <filename>webcore-duplicate-ids.diff</filename>
            <type>text/plain</type>
            <size>6482</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuZ2RiX2hpc3RvcnkKPyBsYXlvdXQtdGVzdHMvZmFzdC94c2wKPyBsYXlvdXQtdGVzdHMvZmFz
dC9kb20vaWRzCkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYkNvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQzMDkKZGlmZiAtdSAt
cCAtcjEuNDMwOSBDaGFuZ2VMb2cKLS0tIENoYW5nZUxvZwkyMDA1LzA2LzIzIDIxOjUyOjE0CTEu
NDMwOQorKysgQ2hhbmdlTG9nCTIwMDUvMDYvMjQgMDA6MjE6NTMKQEAgLTEsMyArMSwyOCBAQAor
MjAwNS0wNi0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAbWFjLmNvbT4KKworCS0gRml4
ZXMgPGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3Nz4K
KwkKKyAgICAgICAgVGVzdCBjYXNlcyBhZGRlZDoKKwlsYXlvdXQtdGVzdHMvZmFzdC9kb20vaWRz
L2R1cGxpY2F0ZS1pZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwlsYXlvdXQtdGVzdHMvZmFzdC9k
b20vaWRzL2R1cGxpY2F0ZS1pZHMuaHRtbDogQWRkZWQuCisJbGF5b3V0LXRlc3RzL2Zhc3QvZG9t
L2lkcy9zd2l0Y2gtY2hpbGRyZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwlsYXlvdXQtdGVzdHMv
ZmFzdC9kb20vaWRzL3N3aXRjaC1jaGlsZHJlbi5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGto
dG1sL3htbC9kb21fZG9jaW1wbC5jcHA6CisgICAgICAgIChEb2N1bWVudEltcGw6OmdldEVsZW1l
bnRCeUlkKToKKwlJZiBubyBlbGVtZW50IGluIHRoZSBpZCB0YWJsZSBjYW4gYmUgZm91bmQsIGFu
ZAorCXdlIGtub3cgdGhhdCB0aGVyZSdzIGF0IGxlYXN0IG9uZSBvdGhlciBlbGVtZW50CisJd2l0
aCB0aGUgc2FtZSBpZCBhcm91bmQsIHRoZW4gdHJhdmVyc2UgdGhlIGRvY3VtZW50CisJYW5kIGlu
c2VydCB0aGUgbmV3IGVsZW1lbnQgaW4gdGhlIGlkIHRhYmxlLgorCQorICAgICAgICAoRG9jdW1l
bnRJbXBsOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChEb2N1bWVudEltcGw6OnJlbW92ZUVs
ZW1lbnRCeUlkKToKKwlJbmNyZW1lbnQgYW5kIGRlY3JlbWVudCB0aGUgaWQgY291bnQgYWNjb3Jk
aW5nbHkuCisJCisgICAgICAgICoga2h0bWwveG1sL2RvbV9kb2NpbXBsLmg6CisJQWRkIFFEaWN0
IGZvciBpZCBjb3VudHMuIFJlbW92ZSBjb25zdCBmcm9tCisJZ2V0RWxlbWVudEJ5SWQgc2luY2Ug
aXQgbWlnaHQgdXBkYXRlIHRoZSBkaWN0LgorCQogMjAwNS0wNi0yMyAgSnVzdGluIEdhcmNpYSAg
PGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFBhdGNoIGJ5IEVyaWMgU2VpZGVs
IDxtYWNkb21lQG9wZW5kYXJ3aW4ub3JnPgpJbmRleDoga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC94bWwvZG9tX2Rv
Y2ltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIzMApkaWZmIC11IC1wIC1yMS4yMzAg
ZG9tX2RvY2ltcGwuY3BwCi0tLSBkb21fZG9jaW1wbC5jcHAJMjAwNS8wNi8yMiAxODoyMjowMgkx
LjIzMAorKysgZG9tX2RvY2ltcGwuY3BwCTIwMDUvMDYvMjQgMDA6MjE6NTUKQEAgLTY2MSwxMyAr
NjYxLDM3IEBAIEVsZW1lbnRJbXBsICpEb2N1bWVudEltcGw6OmNyZWF0ZUVsZW1lbnQKICAgICBy
ZXR1cm4gZTsKIH0KIAotRWxlbWVudEltcGwgKkRvY3VtZW50SW1wbDo6Z2V0RWxlbWVudEJ5SWQo
IGNvbnN0IERPTVN0cmluZyAmZWxlbWVudElkICkgY29uc3QKK0VsZW1lbnRJbXBsICpEb2N1bWVu
dEltcGw6OmdldEVsZW1lbnRCeUlkKCBjb25zdCBET01TdHJpbmcgJmVsZW1lbnRJZCApCiB7Cisg
ICAgRWxlbWVudEltcGwgKmVsZW1lbnQ7CisgICAgUVN0cmluZyBxSWQgPSBlbGVtZW50SWQuc3Ry
aW5nKCk7CisgICAgaW50IGlkQ291bnQ7CisgICAgCiAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGgo
KSA9PSAwKSB7Ci0JcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJl
dHVybiBtX2VsZW1lbnRzQnlJZC5maW5kKGVsZW1lbnRJZC5zdHJpbmcoKSk7CisgICAgZWxlbWVu
dCA9IG1fZWxlbWVudHNCeUlkLmZpbmQoZWxlbWVudElkLnN0cmluZygpKTsKKyAgICAKKyAgICBp
ZiAoZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIAorICAgIC8vIFdl
IGNoZWNrIGlmIHRoZXJlIGFyZSBkdXBsaWNhdGVzIG9mIHRoZSBpZCwgYW5kIGlmIHNvCisgICAg
Ly8gd2UgbG9jYXRlIGl0IGFuZCB1cGRhdGUgdGhlIGVsZW1lbnQgdGFibGUKKyAgICBpZiAoKGlk
Q291bnQgPSAoaW50KW1faWRDb3VudC5maW5kKHFJZCkpKSB7CisgICAgICAgIGZvciAoTm9kZUlt
cGwgKm4gPSB0aGlzOyBuICE9IDA7IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAg
ICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwgKj4obik7
CisgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmdldEF0
dHJpYnV0ZShBVFRSX0lEKSA9PSBlbGVtZW50SWQpIHsKKyAgICAgICAgICAgICAgICBtX2VsZW1l
bnRzQnlJZC5pbnNlcnQocUlkLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKIH0K
IAogRWxlbWVudEltcGwgKkRvY3VtZW50SW1wbDo6ZWxlbWVudEZyb21Qb2ludCggY29uc3QgaW50
IF94LCBjb25zdCBpbnQgX3kgKSBjb25zdApAQCAtNjg4LDkgKzcxMiwxMiBAQCBFbGVtZW50SW1w
bCAqRG9jdW1lbnRJbXBsOjplbGVtZW50RnJvbVBvCiB2b2lkIERvY3VtZW50SW1wbDo6YWRkRWxl
bWVudEJ5SWQoY29uc3QgRE9NU3RyaW5nICZlbGVtZW50SWQsIEVsZW1lbnRJbXBsICplbGVtZW50
KQogewogICAgIFFTdHJpbmcgcUlkID0gZWxlbWVudElkLnN0cmluZygpOworICAgIAorICAgIGlu
dCBpZENvdW50ID0gKGludCltX2lkQ291bnQuZmluZChxSWQpOworICAgIG1faWRDb3VudC5pbnNl
cnQocUlkLCAoaW50ICopKGlkQ291bnQgKyAxKSk7CiAKICAgICBpZiAobV9lbGVtZW50c0J5SWQu
ZmluZChxSWQpID09IE5VTEwpIHsKLQltX2VsZW1lbnRzQnlJZC5pbnNlcnQocUlkLCBlbGVtZW50
KTsKKyAgICAgICAgbV9lbGVtZW50c0J5SWQuaW5zZXJ0KHFJZCwgZWxlbWVudCk7CiAgICAgICAg
IG1fYWNjZXNzS2V5RGljdFZhbGlkID0gZmFsc2U7CiAgICAgfQogfQpAQCAtNzAwLDggKzcyNywx
NiBAQCB2b2lkIERvY3VtZW50SW1wbDo6cmVtb3ZlRWxlbWVudEJ5SWQoY29uCiAgICAgUVN0cmlu
ZyBxSWQgPSBlbGVtZW50SWQuc3RyaW5nKCk7CiAKICAgICBpZiAobV9lbGVtZW50c0J5SWQuZmlu
ZChxSWQpID09IGVsZW1lbnQpIHsKLQltX2VsZW1lbnRzQnlJZC5yZW1vdmUocUlkKTsKKyAgICAg
ICAgbV9lbGVtZW50c0J5SWQucmVtb3ZlKHFJZCk7CiAgICAgICAgIG1fYWNjZXNzS2V5RGljdFZh
bGlkID0gZmFsc2U7CisgICAgCisgICAgICAgIGludCBpZENvdW50OworICAgICAgICBpZiAoKGlk
Q291bnQgPSAoaW50KW1faWRDb3VudC5maW5kKHFJZCkpKSB7CisgICAgICAgICAgICBpZiAoaWRD
b3VudCA9PSAxKSAKKyAgICAgICAgICAgICAgICBtX2lkQ291bnQucmVtb3ZlKHFJZCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9pZENvdW50Lmluc2VydChxSWQsIChpbnQg
KikoaWRDb3VudCAtIDEpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDoga2h0bWwveG1s
L2RvbV9kb2NpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0
bWwveG1sL2RvbV9kb2NpbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTE1CmRpZmYgLXUg
LXAgLXIxLjExNSBkb21fZG9jaW1wbC5oCi0tLSBkb21fZG9jaW1wbC5oCTIwMDUvMDYvMjIgMTg6
MjI6MDIJMS4xMTUKKysrIGRvbV9kb2NpbXBsLmgJMjAwNS8wNi8yNCAwMDoyMTo1NQpAQCAtMTg5
LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBFbnRpdHlSZWZlcmVuY2VJbXBsICpjcmVhdGVFbnRp
dHlSZWZlcmVuY2UgKCBjb25zdCBET01TdHJpbmcgJm5hbWUgKTsKICAgICBOb2RlSW1wbCAqaW1w
b3J0Tm9kZSggTm9kZUltcGwgKmltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBpbnQgJmV4Y2VwdGlv
bmNvZGUgKTsKICAgICB2aXJ0dWFsIEVsZW1lbnRJbXBsICpjcmVhdGVFbGVtZW50TlMgKCBjb25z
dCBET01TdHJpbmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0IERPTVN0cmluZyAmX3F1YWxpZmllZE5h
bWUsIGludCAmZXhjZXB0aW9uY29kZSApOwotICAgIEVsZW1lbnRJbXBsICpnZXRFbGVtZW50QnlJ
ZCAoIGNvbnN0IERPTVN0cmluZyAmZWxlbWVudElkICkgY29uc3Q7CisgICAgRWxlbWVudEltcGwg
KmdldEVsZW1lbnRCeUlkICggY29uc3QgRE9NU3RyaW5nICZlbGVtZW50SWQgKTsKICAgICBFbGVt
ZW50SW1wbCAqZWxlbWVudEZyb21Qb2ludCAoIGNvbnN0IGludCBfeCwgY29uc3QgaW50IF95ICkg
Y29uc3Q7CiAKICAgICBTaGFyZWRQdHI8TmFtZU5vZGVMaXN0SW1wbD4gZ2V0RWxlbWVudHNCeU5h
bWUoY29uc3QgRE9NU3RyaW5nICZlbGVtZW50TmFtZSk7CkBAIC03NjksNiArNzY5LDcgQEAgcHJp
dmF0ZToKICAgICBraHRtbDo6RGVjb2RlciAqbV9kZWNvZGVyOwogCiAgICAgUURpY3Q8RWxlbWVu
dEltcGw+IG1fZWxlbWVudHNCeUlkOworICAgIFFEaWN0PGludD4gbV9pZENvdW50OwogICAgIAog
ICAgIFFEaWN0PEVsZW1lbnRJbXBsPiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7CiAgICAgYm9vbCBt
X2FjY2Vzc0tleURpY3RWYWxpZDsKLS0tIC9kZXYvbnVsbAkyMDA1LTA2LTI0IDAyOjIxOjAwLjAw
MDAwMDAwMCArMDIwMAorKysgbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2lkcy9kdXBsaWNhdGUtaWRz
Lmh0bWwJMjAwNS0wNi0yNCAwMjowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKQEAgLTAsMCArMSwyNCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICAg
ICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgKCdhJyk7CisgICAgICAgIGFsZXJ0IChk
aXYuZmlyc3RDaGlsZC5ub2RlVmFsdWUpOworCisJbmV3RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCAoJ2RpdicpOworCW5ld0Rpdi5pZCA9ICdhJzsKKwluZXdEaXYuYXBwZW5kQ2hpbGQgKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlICgnVGhpcyBjb21lcyBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQg
c2Vjb25kIGRpdicpKTsKKwlkaXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3RGl2LCBkaXYu
bmV4dFNpYmxpbmcpOworCisgICAgICAgIGRpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpdik7
CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgKCdhJyk7CisgICAgICAg
IGFsZXJ0IChkaXYuZmlyc3RDaGlsZC5ub2RlVmFsdWUpOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdHMoKTsiPgorPGRpdiBpZD0iYSI+VGhpcyBpcyB0aGUg
Zmlyc3QgZGl2PC9kaXY+Cis8ZGl2IGlkPSJhIj5UaGlzIGlzIHRoZSBzZWNvbmQgZGl2PC9kaXY+
Cis8L2JvZHk+Ci0tLSAvZGV2L251bGwJMjAwNS0wNi0yNCAwMjoyMTowMC4wMDAwMDAwMDAgKzAy
MDAKKysrIGxheW91dC10ZXN0cy9mYXN0L2RvbS9pZHMvc3dpdGNoLWNoaWxkcmVuLmh0bWwJMjAw
NS0wNi0yNCAwMjoxMTowMi4wMDAwMDAwMDAgKzAyMDAKQEAgLTAsMCArMSwyMyBAQAorPGhlYWQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICB2YXIgdG9wUm93ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYm5hdjEnKTsKKyAgIHZhciBsb3dSb3cgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGFibmF2MicpOworCisgICB0bXAgPSB0b3BSb3cuaW5uZXJIVE1MOwor
ICAgdG9wUm93LmlubmVySFRNTCA9IGxvd1Jvdy5pbm5lckhUTUw7CisgICBsb3dSb3cuaW5uZXJI
VE1MID0gdG1wOworCisgICBhbGVydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWwxJykp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCk7Ij4KKzxk
aXYgaWQ9InRhYm5hdjIiPgorICA8ZGl2IGlkPSJsYWJlbDEiPmE8L2Rpdj4KKzwvZGl2PgorPGRp
diBpZD0idGFibmF2MSI+CisgIDxkaXYgaWQ9ImxhYmVsMiI+YjwvZGl2PgorPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="95"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2616</attachid>
            <date>2005-06-24 01:29:17 -0700</date>
            <delta_ts>2005-07-12 05:24:26 -0700</delta_ts>
            <desc>Address comments</desc>
            <filename>webcore-duplicate-ids-2.diff</filename>
            <type>text/plain</type>
            <size>5914</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuZ2RiX2hpc3RvcnkKPyBsYXlvdXQtdGVzdHMvZmFzdC94c2wKPyBsYXlvdXQtdGVzdHMvZmFz
dC9kb20vaWRzCkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYkNvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQzMTEKZGlmZiAtdSAt
cCAtcjEuNDMxMSBDaGFuZ2VMb2cKLS0tIENoYW5nZUxvZwkyMDA1LzA2LzI0IDA1OjU5OjA1CTEu
NDMxMQorKysgQ2hhbmdlTG9nCTIwMDUvMDYvMjQgMDg6MjM6NTkKQEAgLTEsMyArMSwyNyBAQAor
MjAwNS0wNi0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAbWFjLmNvbT4KKworCS0gRml4
ZXMgPGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3Nz4K
KwkKKyAgICAgICAgVGVzdCBjYXNlcyBhZGRlZDoKKwlsYXlvdXQtdGVzdHMvZmFzdC9kb20vaWRz
L2R1cGxpY2F0ZS1pZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwlsYXlvdXQtdGVzdHMvZmFzdC9k
b20vaWRzL2R1cGxpY2F0ZS1pZHMuaHRtbDogQWRkZWQuCisJbGF5b3V0LXRlc3RzL2Zhc3QvZG9t
L2lkcy9zd2l0Y2gtY2hpbGRyZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwlsYXlvdXQtdGVzdHMv
ZmFzdC9kb20vaWRzL3N3aXRjaC1jaGlsZHJlbi5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGto
dG1sL3htbC9kb21fZG9jaW1wbC5jcHA6CisgICAgICAgIChEb2N1bWVudEltcGw6OmdldEVsZW1l
bnRCeUlkKToKKwlJZiBubyBlbGVtZW50IGluIHRoZSBpZCB0YWJsZSBjYW4gYmUgZm91bmQsIGFu
ZAorCXdlIGtub3cgdGhhdCB0aGVyZSdzIGF0IGxlYXN0IG9uZSBvdGhlciBlbGVtZW50CisJd2l0
aCB0aGUgc2FtZSBpZCBhcm91bmQsIHRoZW4gdHJhdmVyc2UgdGhlIGRvY3VtZW50CisJYW5kIGlu
c2VydCB0aGUgbmV3IGVsZW1lbnQgaW4gdGhlIGlkIHRhYmxlLgorCQorICAgICAgICAoRG9jdW1l
bnRJbXBsOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChEb2N1bWVudEltcGw6OnJlbW92ZUVs
ZW1lbnRCeUlkKToKKwlJbmNyZW1lbnQgYW5kIGRlY3JlbWVudCB0aGUgaWQgY291bnQgYWNjb3Jk
aW5nbHkuCisJCisgICAgICAgICoga2h0bWwveG1sL2RvbV9kb2NpbXBsLmg6CisJQWRkIFFEaWN0
IGZvciBpZCBjb3VudHMuIE1ha2UgZWxlbWVudCBkaWN0IG11dGFibGUuCisJCiAyMDA1LTA2LTIz
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAqIGtodG1sL2h0bWwv
aHRtbF9mb3JtaW1wbC5jcHA6IChET006OkhUTUxUZXh0QXJlYUVsZW1lbnRJbXBsOjpzZXRWYWx1
ZSk6CkluZGV4OiBraHRtbC94bWwvZG9tX2RvY2ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3htbC9kb21fZG9jaW1wbC5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMjMwCmRpZmYgLXUgLXAgLXIxLjIzMCBkb21fZG9jaW1wbC5jcHAKLS0tIGRv
bV9kb2NpbXBsLmNwcAkyMDA1LzA2LzIyIDE4OjIyOjAyCTEuMjMwCisrKyBkb21fZG9jaW1wbC5j
cHAJMjAwNS8wNi8yNCAwODoyNDowMwpAQCAtNjYzLDExICs2NjMsMzcgQEAgRWxlbWVudEltcGwg
KkRvY3VtZW50SW1wbDo6Y3JlYXRlRWxlbWVudAogCiBFbGVtZW50SW1wbCAqRG9jdW1lbnRJbXBs
OjpnZXRFbGVtZW50QnlJZCggY29uc3QgRE9NU3RyaW5nICZlbGVtZW50SWQgKSBjb25zdAogewor
ICAgIEVsZW1lbnRJbXBsICplbGVtZW50OworICAgIFFTdHJpbmcgcUlkID0gZWxlbWVudElkLnN0
cmluZygpOworCiAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGgoKSA9PSAwKSB7Ci0JcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5m
aW5kKGVsZW1lbnRJZC5zdHJpbmcoKSk7CisgICAgZWxlbWVudCA9IG1fZWxlbWVudHNCeUlkLmZp
bmQocUlkKTsKKyAgICAKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CisgICAgICAgIAorICAgIGlmIChpbnQgaWRDb3VudCA9IChpbnQpbV9pZENvdW50LmZpbmQocUlk
KSkgeworICAgICAgICBmb3IgKE5vZGVJbXBsICpuID0gdHJhdmVyc2VOZXh0Tm9kZSgpOyBuICE9
IDA7IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbi0+aXNF
bGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwgKj4obik7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShBVFRSX0lEKSA9PSBlbGVtZW50SWQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aWRDb3VudCA9PSAxKSAKKyAgICAgICAgICAgICAgICAgICAgbV9pZENvdW50LnJlbW92ZShxSWQp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9pZENvdW50Lmlu
c2VydChxSWQsIChjaGFyICopaWRDb3VudCAtIDEpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIG1fZWxlbWVudHNCeUlkLmluc2VydChxSWQsIGVsZW1lbnQpOworICAgICAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiAwOwogfQogCiBFbGVtZW50SW1wbCAqRG9jdW1lbnRJbXBsOjplbGVtZW50RnJv
bVBvaW50KCBjb25zdCBpbnQgX3gsIGNvbnN0IGludCBfeSApIGNvbnN0CkBAIC02ODgsMTAgKzcx
NCwxMyBAQCBFbGVtZW50SW1wbCAqRG9jdW1lbnRJbXBsOjplbGVtZW50RnJvbVBvCiB2b2lkIERv
Y3VtZW50SW1wbDo6YWRkRWxlbWVudEJ5SWQoY29uc3QgRE9NU3RyaW5nICZlbGVtZW50SWQsIEVs
ZW1lbnRJbXBsICplbGVtZW50KQogewogICAgIFFTdHJpbmcgcUlkID0gZWxlbWVudElkLnN0cmlu
ZygpOwotCisgICAgCiAgICAgaWYgKG1fZWxlbWVudHNCeUlkLmZpbmQocUlkKSA9PSBOVUxMKSB7
Ci0JbV9lbGVtZW50c0J5SWQuaW5zZXJ0KHFJZCwgZWxlbWVudCk7CisgICAgICAgIG1fZWxlbWVu
dHNCeUlkLmluc2VydChxSWQsIGVsZW1lbnQpOwogICAgICAgICBtX2FjY2Vzc0tleURpY3RWYWxp
ZCA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCBpZENvdW50ID0gKGludCltX2lk
Q291bnQuZmluZChxSWQpOworICAgICAgICBtX2lkQ291bnQuaW5zZXJ0KHFJZCwgKGNoYXIgKiko
aWRDb3VudCArIDEpKTsKICAgICB9CiB9CiAKQEAgLTcwMCw4ICs3MjksMTUgQEAgdm9pZCBEb2N1
bWVudEltcGw6OnJlbW92ZUVsZW1lbnRCeUlkKGNvbgogICAgIFFTdHJpbmcgcUlkID0gZWxlbWVu
dElkLnN0cmluZygpOwogCiAgICAgaWYgKG1fZWxlbWVudHNCeUlkLmZpbmQocUlkKSA9PSBlbGVt
ZW50KSB7Ci0JbV9lbGVtZW50c0J5SWQucmVtb3ZlKHFJZCk7CisgICAgICAgIG1fZWxlbWVudHNC
eUlkLnJlbW92ZShxSWQpOwogICAgICAgICBtX2FjY2Vzc0tleURpY3RWYWxpZCA9IGZhbHNlOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGludCBpZENvdW50ID0gKGludCltX2lkQ291bnQuZmluZChx
SWQpOyAgICAgICAgCisgICAgICAgIGFzc2VydChpZENvdW50ID4gMCk7CisgICAgICAgIGlmIChp
ZENvdW50ID09IDEpIAorICAgICAgICAgICAgbV9pZENvdW50LnJlbW92ZShxSWQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX2lkQ291bnQuaW5zZXJ0KHFJZCwgKGNoYXIgKikoaWRDb3Vu
dCAtIDEpKTsKICAgICB9CiB9CiAKSW5kZXg6IGtodG1sL3htbC9kb21fZG9jaW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3htbC9kb21fZG9jaW1wbC5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExNQpkaWZmIC11IC1wIC1yMS4xMTUgZG9tX2RvY2lt
cGwuaAotLS0gZG9tX2RvY2ltcGwuaAkyMDA1LzA2LzIyIDE4OjIyOjAyCTEuMTE1CisrKyBkb21f
ZG9jaW1wbC5oCTIwMDUvMDYvMjQgMDg6MjQ6MDMKQEAgLTc2OCw3ICs3NjgsOCBAQCBwcml2YXRl
OgogICAgIAogICAgIGtodG1sOjpEZWNvZGVyICptX2RlY29kZXI7CiAKLSAgICBRRGljdDxFbGVt
ZW50SW1wbD4gbV9lbGVtZW50c0J5SWQ7CisgICAgbXV0YWJsZSBRRGljdDxFbGVtZW50SW1wbD4g
bV9lbGVtZW50c0J5SWQ7CisgICAgbXV0YWJsZSBRRGljdDxjaGFyPiBtX2lkQ291bnQ7CiAgICAg
CiAgICAgUURpY3Q8RWxlbWVudEltcGw+IG1fZWxlbWVudHNCeUFjY2Vzc0tleTsKICAgICBib29s
IG1fYWNjZXNzS2V5RGljdFZhbGlkOwotLS0gL2Rldi9udWxsCTIwMDUtMDYtMjQgMTA6MjM6MDAu
MDAwMDAwMDAwICswMjAwCisrKyBsYXlvdXQtdGVzdHMvZmFzdC9kb20vaWRzL2R1cGxpY2F0ZS1p
ZHMuaHRtbAkyMDA1LTA2LTI0IDAyOjA2OjUyLjAwMDAwMDAwMCArMDIwMApAQCAtMCwwICsxLDI0
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAg
ICAgICBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoJ2EnKTsKKyAgICAgICAgYWxlcnQg
KGRpdi5maXJzdENoaWxkLm5vZGVWYWx1ZSk7CisKKwluZXdEaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50ICgnZGl2Jyk7CisJbmV3RGl2LmlkID0gJ2EnOworCW5ld0Rpdi5hcHBlbmRDaGlsZCAo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUgKCdUaGlzIGNvbWVzIGJldHdlZW4gdGhlIGZpcnN0IGFu
ZCBzZWNvbmQgZGl2JykpOworCWRpdi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdEaXYsIGRp
di5uZXh0U2libGluZyk7CisKKyAgICAgICAgZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGl2
KTsKKworICAgICAgICBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoJ2EnKTsKKyAgICAg
ICAgYWxlcnQgKGRpdi5maXJzdENoaWxkLm5vZGVWYWx1ZSk7Cit9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25Mb2FkPSJydW5UZXN0cygpOyI+Cis8ZGl2IGlkPSJhIj5UaGlzIGlzIHRo
ZSBmaXJzdCBkaXY8L2Rpdj4KKzxkaXYgaWQ9ImEiPlRoaXMgaXMgdGhlIHNlY29uZCBkaXY8L2Rp
dj4KKzwvYm9keT4KLS0tIC9kZXYvbnVsbAkyMDA1LTA2LTI0IDEwOjIzOjAwLjAwMDAwMDAwMCAr
MDIwMAorKysgbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2lkcy9zd2l0Y2gtY2hpbGRyZW4uaHRtbAky
MDA1LTA2LTI0IDAyOjExOjAyLjAwMDAwMDAwMCArMDIwMApAQCAtMCwwICsxLDIzIEBACis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgIHZhciB0b3BSb3cgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGFibmF2MScpOworICAgdmFyIGxvd1JvdyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YWJuYXYyJyk7CisKKyAgIHRtcCA9IHRvcFJvdy5pbm5lckhUTUw7
CisgICB0b3BSb3cuaW5uZXJIVE1MID0gbG93Um93LmlubmVySFRNTDsKKyAgIGxvd1Jvdy5pbm5l
ckhUTUwgPSB0bXA7CisKKyAgIGFsZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbDEn
KSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKTsiPgor
PGRpdiBpZD0idGFibmF2MiI+CisgIDxkaXYgaWQ9ImxhYmVsMSI+YTwvZGl2PgorPC9kaXY+Cis8
ZGl2IGlkPSJ0YWJuYXYxIj4KKyAgPGRpdiBpZD0ibGFiZWwyIj5iPC9kaXY+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="99"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2923</attachid>
            <date>2005-07-12 05:24:26 -0700</date>
            <delta_ts>2005-07-13 20:06:01 -0700</delta_ts>
            <desc>Improve test case</desc>
            <filename>duplicate-ids.diff</filename>
            <type>text/plain</type>
            <size>6548</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuRFNfU3RvcmUKPyAuZ2RiX2hpc3RvcnkKPyBmb28KPyBGb3J3YXJkaW5nSGVhZGVycy9taXNj
L2hhc2h0YWJsZS5oCj8ga2h0bWwvLkRTX1N0b3JlCj8ga2h0bWwvY3NzLy5EU19TdG9yZQo/IGxh
eW91dC10ZXN0cy8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvY3NzMS8uRFNfU3RvcmUKPyBsYXlv
dXQtdGVzdHMvY3NzMS9iYXNpYy8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvY3NzMS9jbGFzc2lm
aWNhdGlvbi8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvZmFzdC8uRFNfU3RvcmUKPyBsYXlvdXQt
dGVzdHMvZmFzdC9kb20vLkRTX1N0b3JlCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2Nzcy1kb20t
cmVhZC0yLWV4cGVjdGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9jc3MtZG9tLXJlYWQt
Mi5odG1sCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1pdGVt
LWV4cGVjdGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9jc3Mtc3R5bGUtZGVjbGFyYXRp
b24taXRlbS5odG1sCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2lkcwo/IGxheW91dC10ZXN0cy9m
YXN0L2pzL2xvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKPyBsYXlvdXQtdGVzdHMvZmFzdC9q
cy9sb2NhdGlvbi1hc3NpZ24uaHRtbAo/IGxheW91dC10ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9u
ZXctbG9jYXRpb24uaHRtbApJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL0NoYW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NDA5CmRp
ZmYgLXUgLXIxLjQ0MDkgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAwNS8wNy8xMiAwNzoyMDoz
MwkxLjQ0MDkKKysrIENoYW5nZUxvZwkyMDA1LzA3LzEyIDEyOjIyOjExCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMDUtMDctMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQG1hYy5jb20+CisKKwkt
IEZpeGVzIDxodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM2
Nzc+CisJCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3QgY2FzZXMgYWRkZWQ6CisJKiBsYXlvdXQtdGVzdHMvZmFzdC9kb20vaWRzL2R1cGxpY2F0ZS1p
ZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwkqIGxheW91dC10ZXN0cy9mYXN0L2RvbS9pZHMvZHVw
bGljYXRlLWlkcy5odG1sOiBBZGRlZC4KKwkKKyAgICAgICAgKiBraHRtbC94bWwvZG9tX2RvY2lt
cGwuY3BwOgorICAgICAgICAoRG9jdW1lbnRJbXBsOjpnZXRFbGVtZW50QnlJZCk6CisJSWYgbm8g
ZWxlbWVudCBpbiB0aGUgaWQgZGljdCBjYW4gYmUgZm91bmQgYW5kIHdlIGtub3cgdGhhdCB0aGVy
ZSdzCisJYXQgbGVhc3Qgb25lIG90aGVyIGVsZW1lbnQgd2l0aCB0aGUgc2FtZSBpZCBhcm91bmQs
IHRoZW4gdHJhdmVyc2UgdGhlIGRvY3VtZW50CisJYW5kIGluc2VydCB0aGUgbmV3IGVsZW1lbnQg
aW4gdGhlIGlkIHRhYmxlLgorCQorICAgICAgICAoRG9jdW1lbnRJbXBsOjphZGRFbGVtZW50QnlJ
ZCk6CisgICAgICAgIChEb2N1bWVudEltcGw6OnJlbW92ZUVsZW1lbnRCeUlkKToKKwlJbmNyZW1l
bnQgYW5kIGRlY3JlbWVudCB0aGUgaWQgY291bnQgYWNjb3JkaW5nbHkuCisJCisgICAgICAgICog
a2h0bWwveG1sL2RvbV9kb2NpbXBsLmg6CisJQWRkIFFEaWN0IGZvciBpZCBjb3VudHMuIE1ha2Ug
ZWxlbWVudCBRRGljdCBtdXRhYmxlLgorCQogMjAwNS0wNy0xMiAgRXJpYyBTZWlkZWwgIDxlc2Vp
ZGVsQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBoeWF0dC4KSW5kZXg6IGtodG1s
L3htbC9kb21fZG9jaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMzMK
ZGlmZiAtdSAtcjEuMjMzIGRvbV9kb2NpbXBsLmNwcAotLS0gZG9tX2RvY2ltcGwuY3BwCTIwMDUv
MDcvMDkgMjA6MTk6MjEJMS4yMzMKKysrIGRvbV9kb2NpbXBsLmNwcAkyMDA1LzA3LzEyIDEyOjIy
OjExCkBAIC02NjIsMTEgKzY2MiwzNyBAQAogCiBFbGVtZW50SW1wbCAqRG9jdW1lbnRJbXBsOjpn
ZXRFbGVtZW50QnlJZCggY29uc3QgRE9NU3RyaW5nICZlbGVtZW50SWQgKSBjb25zdAogeworICAg
IEVsZW1lbnRJbXBsICplbGVtZW50OworICAgIFFTdHJpbmcgcUlkID0gZWxlbWVudElkLnN0cmlu
ZygpOworCiAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGgoKSA9PSAwKSB7Ci0JcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5maW5k
KGVsZW1lbnRJZC5zdHJpbmcoKSk7CisgICAgZWxlbWVudCA9IG1fZWxlbWVudHNCeUlkLmZpbmQo
cUlkKTsKKyAgICAKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIAorICAgIGlmIChpbnQgaWRDb3VudCA9IChpbnQpbV9pZENvdW50LmZpbmQocUlkKSkg
eworICAgICAgICBmb3IgKE5vZGVJbXBsICpuID0gdHJhdmVyc2VOZXh0Tm9kZSgpOyBuICE9IDA7
IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbi0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwgKj4obik7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmdldEF0
dHJpYnV0ZShBVFRSX0lEKSA9PSBlbGVtZW50SWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaWRD
b3VudCA9PSAxKSAKKyAgICAgICAgICAgICAgICAgICAgbV9pZENvdW50LnJlbW92ZShxSWQpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9pZENvdW50Lmluc2Vy
dChxSWQsIChjaGFyICopaWRDb3VudCAtIDEpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIG1fZWxlbWVudHNCeUlkLmluc2VydChxSWQsIGVsZW1lbnQpOworICAgICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiAwOwogfQogCiBFbGVtZW50SW1wbCAqRG9jdW1lbnRJbXBsOjplbGVtZW50RnJvbVBv
aW50KCBjb25zdCBpbnQgX3gsIGNvbnN0IGludCBfeSApIGNvbnN0CkBAIC02ODcsMTAgKzcxMywx
MyBAQAogdm9pZCBEb2N1bWVudEltcGw6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IERPTVN0cmluZyAm
ZWxlbWVudElkLCBFbGVtZW50SW1wbCAqZWxlbWVudCkKIHsKICAgICBRU3RyaW5nIHFJZCA9IGVs
ZW1lbnRJZC5zdHJpbmcoKTsKLQorICAgIAogICAgIGlmIChtX2VsZW1lbnRzQnlJZC5maW5kKHFJ
ZCkgPT0gTlVMTCkgewotCW1fZWxlbWVudHNCeUlkLmluc2VydChxSWQsIGVsZW1lbnQpOworICAg
ICAgICBtX2VsZW1lbnRzQnlJZC5pbnNlcnQocUlkLCBlbGVtZW50KTsKICAgICAgICAgbV9hY2Nl
c3NLZXlEaWN0VmFsaWQgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgaWRDb3Vu
dCA9IChpbnQpbV9pZENvdW50LmZpbmQocUlkKTsKKyAgICAgICAgbV9pZENvdW50Lmluc2VydChx
SWQsIChjaGFyICopKGlkQ291bnQgKyAxKSk7CiAgICAgfQogfQogCkBAIC02OTksOCArNzI4LDE1
IEBACiAgICAgUVN0cmluZyBxSWQgPSBlbGVtZW50SWQuc3RyaW5nKCk7CiAKICAgICBpZiAobV9l
bGVtZW50c0J5SWQuZmluZChxSWQpID09IGVsZW1lbnQpIHsKLQltX2VsZW1lbnRzQnlJZC5yZW1v
dmUocUlkKTsKKyAgICAgICAgbV9lbGVtZW50c0J5SWQucmVtb3ZlKHFJZCk7CiAgICAgICAgIG1f
YWNjZXNzS2V5RGljdFZhbGlkID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGlk
Q291bnQgPSAoaW50KW1faWRDb3VudC5maW5kKHFJZCk7ICAgICAgICAKKyAgICAgICAgYXNzZXJ0
KGlkQ291bnQgPiAwKTsKKyAgICAgICAgaWYgKGlkQ291bnQgPT0gMSkgCisgICAgICAgICAgICBt
X2lkQ291bnQucmVtb3ZlKHFJZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faWRDb3Vu
dC5pbnNlcnQocUlkLCAoY2hhciAqKShpZENvdW50IC0gMSkpOwogICAgIH0KIH0KIApJbmRleDog
a2h0bWwveG1sL2RvbV9kb2NpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YkNvcmUva2h0bWwveG1sL2RvbV9kb2NpbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTE2
CmRpZmYgLXUgLXIxLjExNiBkb21fZG9jaW1wbC5oCi0tLSBkb21fZG9jaW1wbC5oCTIwMDUvMDcv
MDkgMjA6MTk6MjEJMS4xMTYKKysrIGRvbV9kb2NpbXBsLmgJMjAwNS8wNy8xMiAxMjoyMjoxMQpA
QCAtNzU1LDcgKzc1NSw4IEBACiAgICAgCiAgICAga2h0bWw6OkRlY29kZXIgKm1fZGVjb2RlcjsK
IAotICAgIFFEaWN0PEVsZW1lbnRJbXBsPiBtX2VsZW1lbnRzQnlJZDsKKyAgICBtdXRhYmxlIFFE
aWN0PEVsZW1lbnRJbXBsPiBtX2VsZW1lbnRzQnlJZDsKKyAgICBtdXRhYmxlIFFEaWN0PGNoYXI+
IG1faWRDb3VudDsKICAgICAKICAgICBRRGljdDxFbGVtZW50SW1wbD4gbV9lbGVtZW50c0J5QWNj
ZXNzS2V5OwogICAgIGJvb2wgbV9hY2Nlc3NLZXlEaWN0VmFsaWQ7Ci0tLSAvZGV2L251bGwJMjAw
NS0wNy0xMiAxNDoyMjozMC4wMDAwMDAwMDAgKzAyMDAKKysrIGxheW91dC10ZXN0cy9mYXN0L2Rv
bS9pZHMvZHVwbGljYXRlLWlkcy5odG1sCTIwMDUtMDctMTIgMTQ6MTI6MTMuMDAwMDAwMDAwICsw
MjAwCkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
ZGVidWcoc3RyKSB7CisJY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
Jyk7CisKKwlsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisJY29uc29sZS5hcHBl
bmRDaGlsZChsaSk7CisJbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3Ry
KSk7CQorfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsgCisJaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeyAKKwkJbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCX0K
KwlkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVwbGljYXRlJyk7CisJZHVwMSA9IGRp
di5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpdik7CisKKwlkaXYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZHVwbGljYXRlJyk7CisJaWYgKCFkaXYpIHsKKwkJZGVidWcoJ0ZhaWxlZDogZ2V0
RWxlbWVudEJ5SWQgcmV0dXJuZWQgbnVsbCcpOworCQlyZXR1cm47CisJfQorCQorCWlmIChkaXYu
Zmlyc3RDaGlsZC5ub2RlVmFsdWUgIT0gJ1RoaXMgaXMgdGhlIHNlY29uZCBkdXBsaWNhdGUgZGl2
JykgeworCQlkZWJ1ZygnRmFpbGVkOiBnZXRFbGVtZW50QnlJZCByZXR1cm5lZCB0aGUgd3Jvbmcg
ZGl2Jyk7CisJCXJldHVybjsKKwl9CisJCisJZHVwMiA9IGRpdi5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGRpdik7CisJaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXBsaWNhdGUnKSkgewor
CQlkZWJ1ZygnRmFpbGVkOiBnZXRFbGVtZW50QnlJZCBkaWQgbm90IHJldHVybiBudWxsJyk7CisJ
CXJldHVybjsKKwl9CisJCisJLy8gTm93IGluc2VydCB0aGUgbm9kZXMgYWdhaW4KKwljb250YWlu
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7CisJY29udGFpbmVyLmFw
cGVuZENoaWxkKGR1cDEpOworCWNvbnRhaW5lci5hcHBlbmRDaGlsZChkdXAyKTsKKwkKKwlpZiAo
IWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXBsaWNhdGUnKSkgeworCQlkZWJ1ZygnRmFpbGVk
OiBnZXRFbGVtZW50QnlJZCByZXR1cm5lZCBudWxsJyk7CisJCXJldHVybjsKKwl9CisJCisJZGVi
dWcoJ1N1Y2Nlc3MhJyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVu
VGVzdHMoKSI+CitUaGlzIHRlc3RzIHRoYXQgZ2V0RWxlbWVudEJ5SWQgd29ya3MgYXMgZWxlbWVu
dHMgd2l0aCBkdXBsaWNhdGUgaWRzIGFyZSBhZGRlZCBhbmQgcmVtb3ZlZC4gSWYgdGhlIHRlc3Qg
aXMgc3VjY2Vzc2Z1bCwgdGhlIHRleHQgInN1Y2Nlc3MiIHNob3VsZCBiZSBzaG93biBiZWxvdy4K
KzxkaXYgaWQ9ImNvbnRhaW5lciI+Cis8ZGl2IGlkPSJkdXBsaWNhdGUiPlRoaXMgaXMgdGhlIGZp
cnN0IGR1cGxpY2F0ZSBkaXY8L2Rpdj4KKzxkaXYgaWQ9ImR1cGxpY2F0ZSI+VGhpcyBpcyB0aGUg
c2Vjb25kIGR1cGxpY2F0ZSBkaXY8L2Rpdj4KKzwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj4KKzwv
bGk+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="222"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>