<?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>57136</bug_id>
          
          <creation_ts>2011-03-25 18:37:47 -0700</creation_ts>
          <short_desc>removeAllInDirectory() layout test helper method can call successCallback twice</short_desc>
          <delta_ts>2011-03-29 00:20:41 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373827</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-25 18:37:47 -0700</bug_when>
    <thetext>removeAllInDirectory() layout test helper method can call successCallback twice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373829</commentid>
    <comment_count>1</comment_count>
      <attachid>87002</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-25 18:40:32 -0700</bug_when>
    <thetext>Created attachment 87002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373840</commentid>
    <comment_count>2</comment_count>
      <attachid>87002</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-03-25 19:18:01 -0700</bug_when>
    <thetext>Comment on attachment 87002
Patch

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

&gt; LayoutTests/http/tests/filesystem/resources/fs-test-util.js:34
&gt;              }

nit: duplicated diff file entry?

&gt; LayoutTests/http/tests/filesystem/resources/fs-test-util.js:-37
&gt; -            else if (this.entriesCount == 0 &amp;&amp; this.successCallback)

Handling empty directory case differently is a good idea, but looking at the code again, I&apos;m afraid we have more bugs.

Isn&apos;t there a chance we could call callbacks in a sequence like:

- entriesCallback is called with N entries
  - entryRemovedCallback is called N times
  - at the last entry we dispatch successCallback()
- entriesCallback is called again with another M entries
  - entryRemovedCallback is called M times
  - ... (gush)

It is guaranteed that this doesn&apos;t happen in the current readDirectory implementation but in theory it looks possible in other embedders.

So we need to do something like this?


  done = false;

  entryRemovedCallback()
  {
     if (--entriesCount == 0 &amp;&amp; successCallback &amp;&amp; done) {
        successCallback();
        successCallback = null;
     }
  }

  entriesCallback()
  {
     ...
     if (entries.length == 0) {
        if (entriesCount &gt; 0)
           done = true;
        else if (successCallback)
          successCallback();
      }
  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374625</commentid>
    <comment_count>3</comment_count>
      <attachid>87168</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-28 11:15:11 -0700</bug_when>
    <thetext>Created attachment 87168
Added done bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374626</commentid>
    <comment_count>4</comment_count>
      <attachid>87002</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-28 11:17:03 -0700</bug_when>
    <thetext>Comment on attachment 87002
Patch

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

&gt;&gt; LayoutTests/http/tests/filesystem/resources/fs-test-util.js:34
&gt;&gt;              }
&gt; 
&gt; nit: duplicated diff file entry?

Not sure what you mean here; for reasons related to how these tests get run, this code is duplicate in two places now. I can work on fixing that, but I suspect it&apos;ll take some changes in the scripts.

&gt;&gt; LayoutTests/http/tests/filesystem/resources/fs-test-util.js:-37
&gt;&gt; -            else if (this.entriesCount == 0 &amp;&amp; this.successCallback)
&gt; 
&gt; Handling empty directory case differently is a good idea, but looking at the code again, I&apos;m afraid we have more bugs.
&gt; 
&gt; Isn&apos;t there a chance we could call callbacks in a sequence like:
&gt; 
&gt; - entriesCallback is called with N entries
&gt;   - entryRemovedCallback is called N times
&gt;   - at the last entry we dispatch successCallback()
&gt; - entriesCallback is called again with another M entries
&gt;   - entryRemovedCallback is called M times
&gt;   - ... (gush)
&gt; 
&gt; It is guaranteed that this doesn&apos;t happen in the current readDirectory implementation but in theory it looks possible in other embedders.
&gt; 
&gt; So we need to do something like this?
&gt; 
&gt; 
&gt;   done = false;
&gt; 
&gt;   entryRemovedCallback()
&gt;   {
&gt;      if (--entriesCount == 0 &amp;&amp; successCallback &amp;&amp; done) {
&gt;         successCallback();
&gt;         successCallback = null;
&gt;      }
&gt;   }
&gt; 
&gt;   entriesCallback()
&gt;   {
&gt;      ...
&gt;      if (entries.length == 0) {
&gt;         if (entriesCount &gt; 0)
&gt;            done = true;
&gt;         else if (successCallback)
&gt;           successCallback();
&gt;       }
&gt;   }

Did something like this, and got rid of firstEntriesCallback as it&apos;s really not needed.  See what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375075</commentid>
    <comment_count>5</comment_count>
      <attachid>87168</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-29 00:20:36 -0700</bug_when>
    <thetext>Comment on attachment 87168
Added done bit

Clearing flags on attachment: 87168

Committed r82204: &lt;http://trac.webkit.org/changeset/82204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375076</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-29 00:20:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87002</attachid>
            <date>2011-03-25 18:40:32 -0700</date>
            <delta_ts>2011-03-28 11:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57136-20110325184031.patch</filename>
            <type>text/plain</type>
            <size>3386</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIwMTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZmRiMzk5YzBmNzVjNGM3MDlmOGE5
MTMzYTE0YWM2MDRiZmVhNzA0Li43MThhMWZjNWY3NWRlZmI3OTdmN2M1N2U0OWViZWJhNDFiOGJj
ZThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjUgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoKSBsYXlvdXQgdGVzdCBoZWxwZXIgbWV0aG9k
IGNhbiBjYWxsIHN1Y2Nlc3NDYWxsYmFjayB0d2ljZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxMzYKKworICAgICAgICBGaXhlZCB0byBvbmx5IGNh
bGwgc3VjY2Vzc0NhbGxiYWNrIG9uY2UsIHRoZXJlYnkgYXZvaWRpbmcKKyAgICAgICAgZmxha2lu
ZXNzIGluIHRlc3RzIHdoaWNoIHVzZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgIChzZWUgaHR0cDov
L2NyYnVnLmNvbS83NzQ0MikuCisKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qczoKKyAgICAgICAgKHJlbW92ZUFsbEluRGlyZWN0b3J5KToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qczoKKyAg
ICAgICAgKHJlbW92ZUFsbEluRGlyZWN0b3J5KToKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UGx1
Z2luc0VuYWJsZWQoKSBpc24ndCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQyLApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwppbmRl
eCA3ZDhlNmY0MTM0ZTgyZjliZGRiYTk4MWY0YzgyMzIyN2YyMzRjOWM4Li5kMWZlN2RlZWIzZDhi
ZjE2YTg3OGQ1NzMwNTRhZTgxODlmZjJmMzNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwpAQCAtNzIsMTQgKzcyLDIw
IEBAIGZ1bmN0aW9uIHJlbW92ZUFsbEluRGlyZWN0b3J5KGRpcmVjdG9yeSwgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW50
cmllcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhp
cy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh0aGlzLmVudHJpZXNDb3VudCA9PSAwICYmIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQorICAg
ICAgICB9KTsKKworICAgICAgICB0aGlzLmZpcnN0RW50cmllc0NhbGxiYWNrID0gYmluZENhbGxi
YWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChl
bnRyaWVzLmxlbmd0aCA9PSAwKQogICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNr
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzQ2FsbGJh
Y2soZW50cmllcykKICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5yZW1vdmVBbGxJbkRpcmVj
dG9yeSA9IGZ1bmN0aW9uKGRpcmVjdG9yeSkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5y
ZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLnJlYWRl
ci5yZWFkRW50cmllcyh0aGlzLmVudHJpZXNDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsK
KyAgICAgICAgICAgIHRoaXMucmVhZGVyLnJlYWRFbnRyaWVzKHRoaXMuZmlyc3RFbnRyaWVzQ2Fs
bGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIH07CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zz
LXRlc3QtdXRpbC5qcwppbmRleCAyMTVmMTI0ZjQ3OTU4ZjJiYjA1OTBhOTNiOGJiZmIzYWJiYTY1
ODA2Li4xZDRiMzNjZTQ1YjgyNjI0OGJmN2QyYTRiNzcyYzc5MmQ5Y2E2ZmNhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRp
bC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zz
LXRlc3QtdXRpbC5qcwpAQCAtMzQsMTQgKzM0LDIwIEBAIGZ1bmN0aW9uIHJlbW92ZUFsbEluRGly
ZWN0b3J5KGRpcmVjdG9yeSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpCiAgICAgICAgICAgICAg
ICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA9PSAw
ICYmIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICB9KTsKKworICAgICAgICB0aGlzLmZp
cnN0RW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PSAwKQogICAgICAg
ICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGhpcy5lbnRyaWVzQ2FsbGJhY2soZW50cmllcykKICAgICAgICAgfSk7CiAK
ICAgICAgICAgdGhpcy5yZW1vdmVBbGxJbkRpcmVjdG9yeSA9IGZ1bmN0aW9uKGRpcmVjdG9yeSkK
ICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5yZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRlUmVh
ZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLnJlYWRlci5yZWFkRW50cmllcyh0aGlzLmVudHJpZXND
YWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKKyAgICAgICAgICAgIHRoaXMucmVhZGVyLnJl
YWRFbnRyaWVzKHRoaXMuZmlyc3RFbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7
CiAgICAgICAgIH07CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87168</attachid>
            <date>2011-03-28 11:15:11 -0700</date>
            <delta_ts>2011-03-29 00:20:36 -0700</delta_ts>
            <desc>Added done bit</desc>
            <filename>bug-57136-20110328111509.patch</filename>
            <type>text/plain</type>
            <size>4921</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIwMTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZmRiMzk5YzBmNzVjNGM3MDlmOGE5
MTMzYTE0YWM2MDRiZmVhNzA0Li43MThhMWZjNWY3NWRlZmI3OTdmN2M1N2U0OWViZWJhNDFiOGJj
ZThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjUgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoKSBsYXlvdXQgdGVzdCBoZWxwZXIgbWV0aG9k
IGNhbiBjYWxsIHN1Y2Nlc3NDYWxsYmFjayB0d2ljZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxMzYKKworICAgICAgICBGaXhlZCB0byBvbmx5IGNh
bGwgc3VjY2Vzc0NhbGxiYWNrIG9uY2UsIHRoZXJlYnkgYXZvaWRpbmcKKyAgICAgICAgZmxha2lu
ZXNzIGluIHRlc3RzIHdoaWNoIHVzZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgIChzZWUgaHR0cDov
L2NyYnVnLmNvbS83NzQ0MikuCisKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qczoKKyAgICAgICAgKHJlbW92ZUFsbEluRGlyZWN0b3J5KToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qczoKKyAg
ICAgICAgKHJlbW92ZUFsbEluRGlyZWN0b3J5KToKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UGx1
Z2luc0VuYWJsZWQoKSBpc24ndCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQyLApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwppbmRl
eCA3ZDhlNmY0MTM0ZTgyZjliZGRiYTk4MWY0YzgyMzIyN2YyMzRjOWM4Li44MGMxMWMxZWIyYjcx
YzgxNGI0YWIyNmVkYjQ4ZWZmNjZjMzc1NmYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwpAQCAtNTAsMTQgKzUwLDE3
IEBAIHZhciBKb2luSGVscGVyID0gZnVuY3Rpb24oKQogZnVuY3Rpb24gcmVtb3ZlQWxsSW5EaXJl
Y3RvcnkoZGlyZWN0b3J5LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKICAgICB2
YXIgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIgPSBmdW5jdGlvbihzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgdGhpcy5lbnRyaWVzQ291bnQgPSAwOworICAgICAg
ICB0aGlzLmRvbmUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5yZWFkZXIgPSBudWxsOwogICAgICAg
ICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKICAgICAgICAgdGhpcy5l
cnJvckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKIAogICAgICAgICB0aGlzLmVudHJ5UmVtb3Zl
ZENhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJ5KQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoLS10aGlzLmVudHJpZXNDb3VudCA9PSAwICYmIHRoaXMuc3VjY2Vz
c0NhbGxiYWNrKQorICAgICAgICAgICAgaWYgKC0tdGhpcy5lbnRyaWVzQ291bnQgPT0gMCAmJiB0
aGlzLnN1Y2Nlc3NDYWxsYmFjayAmJiB0aGlzLmRvbmUpIHsKICAgICAgICAgICAgICAgICB0aGlz
LnN1Y2Nlc3NDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNr
ID0gbnVsbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5lbnRy
aWVzQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50cmllcykKQEAgLTY2
LDEzICs2OSwxNCBAQCBmdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewogICAgICAgICAgICAgICAgIHRoaXMuZW50
cmllc0NvdW50Kys7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3Rvcnkp
CiAgICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5l
bnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGVudHJp
ZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFj
ayk7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoKQogICAgICAgICAgICAgICAgIHRoaXMucmVhZGVyLnJlYWRFbnRyaWVzKHRo
aXMuZW50cmllc0NhbGxiYWNrLCB0aGlzLmVycm9yQ2FsbGJhY2spOwotICAgICAgICAgICAgZWxz
ZSBpZiAodGhpcy5lbnRyaWVzQ291bnQgPT0gMCAmJiB0aGlzLnN1Y2Nlc3NDYWxsYmFjaykKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZW50cmllc0NvdW50ID4gMCkKKyAgICAgICAgICAgICAg
ICB0aGlzLmRvbmUgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdWNjZXNzQ2Fs
bGJhY2spCiAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKICAgICAgICAg
fSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtdGVzdC11dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKaW5kZXggMjE1ZjEyNGY0Nzk1OGYyYmIwNTkwYTkz
YjhiYmZiM2FiYmE2NTgwNi4uMjE4NzU4NzlhMTMyZWZmYzI3ZmFlYTc5MTFjOTI0MzEwZWQzNGZj
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNl
cy9mcy10ZXN0LXV0aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKQEAgLTEyLDE0ICsxMiwxNyBAQCBmdW5jdGlvbiBi
aW5kQ2FsbGJhY2sob2JqLCBjYWxsYmFjaywgYXJnMSwgYXJnMiwgYXJnMykKIGZ1bmN0aW9uIHJl
bW92ZUFsbEluRGlyZWN0b3J5KGRpcmVjdG9yeSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSB7CiAgICAgdmFyIFJlbW92ZUFsbEluRGlyZWN0b3J5SGVscGVyID0gZnVuY3Rpb24oc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7CiAgICAgICAgIHRoaXMuZW50cmllc0NvdW50
ID0gMDsKKyAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7CiAgICAgICAgIHRoaXMucmVhZGVyID0g
bnVsbDsKICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNzQ2FsbGJhY2s7CiAg
ICAgICAgIHRoaXMuZXJyb3JDYWxsYmFjayA9IGVycm9yQ2FsbGJhY2s7CiAKICAgICAgICAgdGhp
cy5lbnRyeVJlbW92ZWRDYWxsYmFjayA9IGJpbmRDYWxsYmFjayh0aGlzLCBmdW5jdGlvbihlbnRy
eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKC0tdGhpcy5lbnRyaWVzQ291bnQgPT0gMCAm
JiB0aGlzLnN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgIGlmICgtLXRoaXMuZW50cmllc0Nv
dW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7CiAgICAgICAg
ICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB0aGlzLnN1
Y2Nlc3NDYWxsYmFjayA9IG51bGw7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogCiAgICAg
ICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVu
dHJpZXMpCkBAIC0yOCwxMyArMzEsMTQgQEAgZnVuY3Rpb24gcmVtb3ZlQWxsSW5EaXJlY3Rvcnko
ZGlyZWN0b3J5LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAg
ICAgICB0aGlzLmVudHJpZXNDb3VudCsrOwogICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzW2ld
LmlzRGlyZWN0b3J5KQogICAgICAgICAgICAgICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZVJlY3Vy
c2l2ZWx5KHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZSh0aGlzLmVudHJ5UmVtb3ZlZENhbGxiYWNrLCB0aGlz
LmVycm9yQ2FsbGJhY2spOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICB0aGlzLnJlYWRlci5y
ZWFkRW50cmllcyh0aGlzLmVudHJpZXNDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZW50cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNz
Q2FsbGJhY2spCisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCisg
ICAgICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRo
aXMuc3VjY2Vzc0NhbGxiYWNrKQogICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNr
KCk7CiAgICAgICAgIH0pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>