<?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>30935</bug_id>
          
          <creation_ts>2009-10-29 17:04:03 -0700</creation_ts>
          <short_desc>Simplify LocalStorageThread</short_desc>
          <delta_ts>2009-11-05 01:33:00 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159147</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 17:04:03 -0700</bug_when>
    <thetext>A moment ago (in https://bugs.webkit.org/show_bug.cgi?id=30920) I fixed a bug in LocalStorageThread, but I&apos;m still not very happy with the way the class looks.  It&apos;s pretty confusing how it holds onto a reference of itself, has unnecessary locks, detaches the thread when it could just join on it, etc.  Let&apos;s try to clean things up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159154</commentid>
    <comment_count>1</comment_count>
      <attachid>42161</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 17:16:51 -0700</bug_when>
    <thetext>Created attachment 42161
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159163</commentid>
    <comment_count>2</comment_count>
      <attachid>42161</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-29 17:27:52 -0700</bug_when>
    <thetext>Comment on attachment 42161
Patch v1

&gt; +    // Even in weird, exceptional cases, don&apos;t wait on a non-existant thread to terminate.

Spelling error here. It&apos;s &quot;nonexistent&quot; rather than &quot;non-existant&quot;.

&gt; +    void *returnValue;

WebKit coding style is void* for this, not void *.

&gt;      // FIXME: Rename this class to StorageThread
&gt; -    class LocalStorageThread : public ThreadSafeShared&lt;LocalStorageThread&gt; {
&gt; +    class LocalStorageThread {

Should derive from Noncopyable for multiple reasons. One is that it will make this derive from FastAllocBase and save some work on the FastAllocBase.

By the way, you could still have made this have a create function and a private constructor, just using PassOwnPtr instead of PassRefPtr. The benefit would be that we&apos;d avoid having a &quot;bare new&quot; outside a create function. Might be good long term to have that style.

Otherwise, looks good. I&apos;m going to say review- because I think the Noncopyable is fairly important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159168</commentid>
    <comment_count>3</comment_count>
      <attachid>42162</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 17:41:32 -0700</bug_when>
    <thetext>Created attachment 42162
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159169</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 17:42:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 42161 [details])
&gt; &gt; +    // Even in weird, exceptional cases, don&apos;t wait on a non-existant thread to terminate.
&gt; 
&gt; Spelling error here. It&apos;s &quot;nonexistent&quot; rather than &quot;non-existant&quot;.
&gt; 
&gt; &gt; +    void *returnValue;
&gt; 
&gt; WebKit coding style is void* for this, not void *.
&gt; 
&gt; &gt;      // FIXME: Rename this class to StorageThread
&gt; &gt; -    class LocalStorageThread : public ThreadSafeShared&lt;LocalStorageThread&gt; {
&gt; &gt; +    class LocalStorageThread {
&gt; 
&gt; Should derive from Noncopyable for multiple reasons. One is that it will make
&gt; this derive from FastAllocBase and save some work on the FastAllocBase.
&gt; 
&gt; By the way, you could still have made this have a create function and a private
&gt; constructor, just using PassOwnPtr instead of PassRefPtr. The benefit would be
&gt; that we&apos;d avoid having a &quot;bare new&quot; outside a create function. Might be good
&gt; long term to have that style.
&gt; 
&gt; Otherwise, looks good. I&apos;m going to say review- because I think the Noncopyable
&gt; is fairly important.

All done.

Also, I noticed how silly it was to have methods for each task you might want to schedule.  So I combined them into one generic function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159944</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-11-02 16:39:01 -0800</bug_when>
    <thetext>Ping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160520</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-11-04 11:11:59 -0800</bug_when>
    <thetext>Committed r50519: &lt;http://trac.webkit.org/changeset/50519&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160590</commentid>
    <comment_count>7</comment_count>
      <attachid>42517</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-11-04 13:54:52 -0800</bug_when>
    <thetext>Created attachment 42517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160591</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-11-04 13:55:29 -0800</bug_when>
    <thetext>Had to roll out the previous change.  New patch makes LocalStorageTask not ref-counted and only uses own ptrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160767</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-11-05 01:33:00 -0800</bug_when>
    <thetext>Committed r50558: &lt;http://trac.webkit.org/changeset/50558&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42161</attachid>
            <date>2009-10-29 17:16:51 -0700</date>
            <delta_ts>2009-10-29 17:41:28 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30935-20091029171649.patch</filename>
            <type>text/plain</type>
            <size>7995</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDMxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMTAtMjkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2ltcGxpZnkgTG9jYWxTdG9yYWdlVGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDkzNQorCisgICAgICAgIE9uIExvY2FsU3RvcmFnZXRocmVh
ZDogUmVtb3ZlIHJlZmVyZW5jZSBjb3VudGluZy4gR2V0IHJpZCBvZiBsb2NraW5nLiBNYWtlIHNv
bWUKKyAgICAgICAgb2YgdGhlIG1ldGhvZCBuYW1lcyBhIGJpdCBtb3JlIGNsZWFyLiBBc3NlcnQg
cHJvcGVyIHRocmVhZCB1c2FnZS4gSm9pbiByYXRoZXIKKyAgICAgICAgdGhhbiBkZXRhY2hpbmcg
dGhlIHRocmVhZCBhbmQgZG9pbmcgYW4gYWQtaG9jIGZvcm0gb2Ygam9pbi4gQXZvaWQgdG91Y2hp
bmcKKyAgICAgICAgdmFyaWFibGVzIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB3aGVuIHNpbXBs
ZSB0byBkbyBzby4KKworICAgICAgICBObyBiZWhhdmlvciBzaG91bGQgaGF2ZSBjaGFuZ2VkLgor
CisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjpMb2NhbFN0b3JhZ2VUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjp+TG9jYWxTdG9yYWdlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6c2NoZWR1bGVJbXBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjpzY2hlZHVsZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjpwZXJmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBzdG9y
YWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFn
ZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgor
CiAyMDA5LTEwLTI5ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxT
dG9yYWdlVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlVGhyZWFkLmNwcAkocmV2aXNpb24gNTAzMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxT
dG9yYWdlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNDIgKzMzLDMzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxMb2NhbFN0b3JhZ2VUaHJlYWQ+IExvY2Fs
U3RvcmFnZVRocmVhZDo6Y3JlYXRlKCkKK0xvY2FsU3RvcmFnZVRocmVhZDo6TG9jYWxTdG9yYWdl
VGhyZWFkKCkKKyAgICA6IG1fdGhyZWFkSUQoMCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IExvY2FsU3RvcmFnZVRocmVhZCk7CiB9CiAKLUxvY2FsU3RvcmFnZVRocmVhZDo6TG9jYWxTdG9y
YWdlVGhyZWFkKCkKLSAgICA6IG1fdGhyZWFkSUQoMCkKLSAgICAsIG1fdGVybWluYXRlZChmYWxz
ZSkKK0xvY2FsU3RvcmFnZVRocmVhZDo6fkxvY2FsU3RvcmFnZVRocmVhZCgpCiB7Ci0gICAgbV9z
ZWxmUmVmID0gdGhpczsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCgh
bV90aHJlYWRJRCk7CiB9CiAKIGJvb2wgTG9jYWxTdG9yYWdlVGhyZWFkOjpzdGFydCgpCiB7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotCi0gICAgaWYgKG1f
dGhyZWFkSUQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgbV90aHJlYWRJRCA9IGNyZWF0
ZVRocmVhZChMb2NhbFN0b3JhZ2VUaHJlYWQ6OmxvY2FsU3RvcmFnZVRocmVhZFN0YXJ0LCB0aGlz
LCAiV2ViQ29yZTogTG9jYWxTdG9yYWdlIik7Ci0KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIGlmICghbV90aHJlYWRJRCkKKyAgICAgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRocmVh
ZChMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnRDYWxsYmFjaywgdGhpcywgIldl
YkNvcmU6IExvY2FsU3RvcmFnZSIpOwogICAgIHJldHVybiBtX3RocmVhZElEOwogfQogCi12b2lk
KiBMb2NhbFN0b3JhZ2VUaHJlYWQ6OmxvY2FsU3RvcmFnZVRocmVhZFN0YXJ0KHZvaWQqIHRocmVh
ZCkKK3ZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKHZv
aWQqIHRocmVhZCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TG9jYWxTdG9yYWdlVGhyZWFk
Kj4odGhyZWFkKS0+bG9jYWxTdG9yYWdlVGhyZWFkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PExvY2FsU3RvcmFnZVRocmVhZCo+KHRocmVhZCktPnRocmVhZEVudHJ5UG9pbnQoKTsKIH0KIAot
dm9pZCogTG9jYWxTdG9yYWdlVGhyZWFkOjpsb2NhbFN0b3JhZ2VUaHJlYWQoKQordm9pZCogTG9j
YWxTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50KCkKIHsKLSAgICB7Ci0gICAgICAgIC8v
IFdhaXQgZm9yIExvY2FsU3RvcmFnZVRocmVhZDo6c3RhcnQoKSB0byBjb21wbGV0ZS4KLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgIH0KLQorICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFJl
ZlB0cjxMb2NhbFN0b3JhZ2VUYXNrPiB0YXNrOwogICAgICAgICBpZiAoIW1fcXVldWUud2FpdEZv
ck1lc3NhZ2UodGFzaykpCkBAIC03NywyNCArNjgsMTkgQEAgdm9pZCogTG9jYWxTdG9yYWdlVGhy
ZWFkOjpsb2NhbFN0b3JhZ2VUaAogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwogICAgIH0K
IAotICAgIC8vIERldGFjaCB0aGUgdGhyZWFkIHNvIGl0cyByZXNvdXJjZXMgYXJlIG5vIGxvbmdl
ciBvZiBhbnkgY29uY2VybiB0byBhbnlvbmUgZWxzZQotICAgIGRldGFjaFRocmVhZChtX3RocmVh
ZElEKTsKLSAgICBtX3RocmVhZElEID0gMDsKLQotICAgIC8vIENsZWFyIHRoZSBzZWxmIHJlZnB0
ciwgcG9zc2libHkgcmVzdWx0aW5nIGluIGRlbGV0aW9uCi0gICAgbV9zZWxmUmVmID0gMDsKLQog
ICAgIHJldHVybiAwOwogfQogCiB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6c2NoZWR1bGVJbXBv
cnQoU3RvcmFnZUFyZWFTeW5jKiBhcmVhKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkSUQpOwogICAgIG1fcXVl
dWUuYXBwZW5kKExvY2FsU3RvcmFnZVRhc2s6OmNyZWF0ZUltcG9ydChhcmVhKSk7CiB9CiAKIHZv
aWQgTG9jYWxTdG9yYWdlVGhyZWFkOjpzY2hlZHVsZVN5bmMoU3RvcmFnZUFyZWFTeW5jKiBhcmVh
KQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtp
bGxlZCgpICYmIG1fdGhyZWFkSUQpOwogICAgIG1fcXVldWUuYXBwZW5kKExvY2FsU3RvcmFnZVRh
c2s6OmNyZWF0ZVN5bmMoYXJlYSkpOwogfQpAQCAtMTAyLDI5ICs4OCwyMiBAQCB2b2lkIExvY2Fs
U3RvcmFnZVRocmVhZDo6c2NoZWR1bGVTeW5jKFN0CiB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6
dGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgLy8gSWRl
YWxseSB3ZSdkIG5ldmVyIGJlIGtpbGxpbmcgYSB0aHJlYWQgdGhhdCB3YXNuJ3QgbGl2ZSwgc28g
QVNTRVJUIGl0LgotICAgIC8vIEJ1dCBpZiB3ZSBkbyBpbiBhIHJlbGVhc2UgYnVpbGQsIG1ha2Ug
c3VyZSB0byBub3Qgd2FpdCBvbiBhIGNvbmRpdGlvbiB0aGF0IHdpbGwgbmV2ZXIgZ2V0IHNpZ25h
bGxlZAogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZElEKTsKKyAgICAv
LyBFdmVuIGluIHdlaXJkLCBleGNlcHRpb25hbCBjYXNlcywgZG9uJ3Qgd2FpdCBvbiBhIG5vbi1l
eGlzdGFudCB0aHJlYWQgdG8gdGVybWluYXRlLgogICAgIGlmICghbV90aHJlYWRJRCkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgdm9pZCAqcmV0dXJuVmFsdWU7CiAgICAgbV9xdWV1ZS5hcHBlbmQo
TG9jYWxTdG9yYWdlVGFzazo6Y3JlYXRlVGVybWluYXRlKHRoaXMpKTsKLQotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3Rlcm1pbmF0ZUxvY2spOwotICAgIHdoaWxlICghbV90ZXJtaW5hdGVkKQot
ICAgICAgICBtX3Rlcm1pbmF0ZUNvbmRpdGlvbi53YWl0KG1fdGVybWluYXRlTG9jayk7CisgICAg
d2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCwgJnJldHVyblZhbHVlKTsKKyAgICBB
U1NFUlQobV9xdWV1ZS5raWxsZWQoKSk7CisgICAgbV90aHJlYWRJRCA9IDA7CiB9CiAKIHZvaWQg
TG9jYWxTdG9yYWdlVGhyZWFkOjpwZXJmb3JtVGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKLQogICAgIG1fcXVldWUua2lsbCgpOwotCi0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fdGVybWluYXRlTG9jayk7Ci0gICAgbV90ZXJtaW5hdGVkID0gdHJ1ZTsKLSAgICBt
X3Rlcm1pbmF0ZUNvbmRpdGlvbi5zaWduYWwoKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdG9y
YWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9M
b2NhbFN0b3JhZ2VUaHJlYWQuaAkocmV2aXNpb24gNTAzMTApCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDM1ICszOSwyNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTG9jYWxTdG9yYWdlVGFzazsKIAogICAgIC8v
IEZJWE1FOiBSZW5hbWUgdGhpcyBjbGFzcyB0byBTdG9yYWdlVGhyZWFkCi0gICAgY2xhc3MgTG9j
YWxTdG9yYWdlVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8TG9jYWxTdG9yYWdlVGhy
ZWFkPiB7CisgICAgY2xhc3MgTG9jYWxTdG9yYWdlVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsU3RvcmFnZVRocmVhZD4gY3JlYXRlKCk7CisgICAg
ICAgIExvY2FsU3RvcmFnZVRocmVhZCgpOworICAgICAgICB+TG9jYWxTdG9yYWdlVGhyZWFkKCk7
CiAKICAgICAgICAgYm9vbCBzdGFydCgpOworICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCiAg
ICAgICAgIHZvaWQgc2NoZWR1bGVJbXBvcnQoU3RvcmFnZUFyZWFTeW5jKik7CiAgICAgICAgIHZv
aWQgc2NoZWR1bGVTeW5jKFN0b3JhZ2VBcmVhU3luYyopOwogCi0gICAgICAgIC8vIENhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZCB0byBzeW5jaHJvbm91c2x5IHNodXQgZG93biB0aGlzIHRocmVh
ZAotICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwotICAgICAgICAvLyBCYWNrZ3JvdW5kIHRocmVh
ZCBwYXJ0IG9mIHRoZSB0ZXJtaW5hdGUgcHJvY2VkdXJlCisgICAgICAgIC8vIEJhY2tncm91bmQg
dGhyZWFkIHBhcnQgb2YgdGhlIHRlcm1pbmF0ZSBwcm9jZWR1cmUuCiAgICAgICAgIHZvaWQgcGVy
Zm9ybVRlcm1pbmF0ZSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgTG9jYWxTdG9yYWdlVGhy
ZWFkKCk7CisgICAgICAgIC8vIENhbGxlZCBvbiBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICAgICAg
c3RhdGljIHZvaWQqIHRocmVhZEVudHJ5UG9pbnRDYWxsYmFjayh2b2lkKik7CisgICAgICAgIHZv
aWQqIHRocmVhZEVudHJ5UG9pbnQoKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCogbG9jYWxTdG9y
YWdlVGhyZWFkU3RhcnQodm9pZCopOwotICAgICAgICB2b2lkKiBsb2NhbFN0b3JhZ2VUaHJlYWQo
KTsKLQotICAgICAgICBNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAgICAgICAgIFRocmVh
ZElkZW50aWZpZXIgbV90aHJlYWRJRDsKLSAgICAgICAgUmVmUHRyPExvY2FsU3RvcmFnZVRocmVh
ZD4gbV9zZWxmUmVmOwotCiAgICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQdHI8TG9jYWxTdG9yYWdl
VGFzaz4gPiBtX3F1ZXVlOwotCi0gICAgICAgIE11dGV4IG1fdGVybWluYXRlTG9jazsKLSAgICAg
ICAgVGhyZWFkQ29uZGl0aW9uIG1fdGVybWluYXRlQ29uZGl0aW9uOwotICAgICAgICBib29sIG1f
dGVybWluYXRlZDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAkocmV2aXNpb24gNTAzMTApCisrKyBXZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
MTEgKzQ4LDExIEBAIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiBTdG9yYWdlU3kKIH0K
IAogU3RvcmFnZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5nJiBw
YXRoKQotICAgIDogbV9wYXRoKHBhdGguY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICA6IG1fdGhy
ZWFkKG5ldyBMb2NhbFN0b3JhZ2VUaHJlYWQpCisgICAgLCBtX3BhdGgocGF0aC5jcm9zc1RocmVh
ZFN0cmluZygpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFt
X3BhdGguaXNFbXB0eSgpKTsKLSAgICBtX3RocmVhZCA9IExvY2FsU3RvcmFnZVRocmVhZDo6Y3Jl
YXRlKCk7CiAgICAgbV90aHJlYWQtPnN0YXJ0KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmgJKHJldmlzaW9uIDUwMzEwKQorKysgV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRo
KTsKIAotICAgICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBtX3RocmVhZDsKKyAgICAg
ICAgT3duUHRyPExvY2FsU3RvcmFnZVRocmVhZD4gbV90aHJlYWQ7CiAKICAgICAvLyBUaGUgZm9s
bG93aW5nIG1lbWJlcnMgYXJlIHN1YmplY3QgdG8gdGhyZWFkIHN5bmNocm9uaXphdGlvbiBpc3N1
ZXMKICAgICBwdWJsaWM6
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42162</attachid>
            <date>2009-10-29 17:41:32 -0700</date>
            <delta_ts>2009-11-04 13:54:45 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30935-20091029174131.patch</filename>
            <type>text/plain</type>
            <size>9470</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDMxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMTAtMjkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2ltcGxpZnkgTG9jYWxTdG9yYWdlVGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDkzNQorCisgICAgICAgIE9uIExvY2FsU3RvcmFnZXRocmVh
ZDogUmVtb3ZlIHJlZmVyZW5jZSBjb3VudGluZy4gR2V0IHJpZCBvZiBsb2NraW5nLiBNYWtlIHNv
bWUKKyAgICAgICAgb2YgdGhlIG1ldGhvZCBuYW1lcyBhIGJpdCBtb3JlIGNsZWFyLiBBc3NlcnQg
cHJvcGVyIHRocmVhZCB1c2FnZS4gSm9pbiByYXRoZXIKKyAgICAgICAgdGhhbiBkZXRhY2hpbmcg
dGhlIHRocmVhZCBhbmQgZG9pbmcgYW4gYWQtaG9jIGZvcm0gb2Ygam9pbi4gQXZvaWQgdG91Y2hp
bmcKKyAgICAgICAgdmFyaWFibGVzIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB3aGVuIHNpbXBs
ZSB0byBkbyBzby4gIEFsc28gY3JlYXRlIGEgZ2VuZXJpYworICAgICAgICBzY2hlZHVsZVRhc2sg
ZnVuY3Rpb24gcmF0aGVyIHRoYW4gb25lIGZvciBlYWNoIHRhc2suCisKKyAgICAgICAgTm8gYmVo
YXZpb3Igc2hvdWxkIGhhdmUgY2hhbmdlZC4KKworICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9y
YWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6TG9jYWxTdG9yYWdl
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6fkxvY2FsU3Rv
cmFnZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2lu
dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFk
RW50cnlQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnNjaGVk
dWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnBlcmZvcm1UZXJtaW5h
dGUpOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmg6CisgICAgICAgICog
c3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZVN5bmNNYW5hZ2VyOjp+U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VTeW5jTWFuYWdlcjo6c2NoZWR1bGVJbXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZVN5bmMpOgorICAgICAgICAqIHN0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmg6CisKIDIwMDktMTAtMjkgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwCShyZXZpc2lvbiA1MDMxMCkKKysrIFdl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw0MiArMzMsMzggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPExvY2Fs
U3RvcmFnZVRocmVhZD4gTG9jYWxTdG9yYWdlVGhyZWFkOjpjcmVhdGUoKQorUGFzc093blB0cjxM
b2NhbFN0b3JhZ2VUaHJlYWQ+IExvY2FsU3RvcmFnZVRocmVhZDo6Y3JlYXRlKCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsU3RvcmFnZVRocmVhZCk7CisgICAgcmV0dXJuIG5ldyBM
b2NhbFN0b3JhZ2VUaHJlYWQ7CiB9CiAKIExvY2FsU3RvcmFnZVRocmVhZDo6TG9jYWxTdG9yYWdl
VGhyZWFkKCkKICAgICA6IG1fdGhyZWFkSUQoMCkKLSAgICAsIG1fdGVybWluYXRlZChmYWxzZSkK
IHsKLSAgICBtX3NlbGZSZWYgPSB0aGlzOwogfQogCi1ib29sIExvY2FsU3RvcmFnZVRocmVhZDo6
c3RhcnQoKQorTG9jYWxTdG9yYWdlVGhyZWFkOjp+TG9jYWxTdG9yYWdlVGhyZWFkKCkKIHsKLSAg
ICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Ci0KLSAgICBpZiAobV90
aHJlYWRJRCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBtX3RocmVhZElEID0gY3JlYXRl
VGhyZWFkKExvY2FsU3RvcmFnZVRocmVhZDo6bG9jYWxTdG9yYWdlVGhyZWFkU3RhcnQsIHRoaXMs
ICJXZWJDb3JlOiBMb2NhbFN0b3JhZ2UiKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVCghbV90aHJlYWRJRCk7Cit9CiAKK2Jvb2wgTG9jYWxTdG9yYWdlVGhyZWFkOjpz
dGFydCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fdGhyZWFk
SUQpCisgICAgICAgIG1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoTG9jYWxTdG9yYWdlVGhyZWFk
Ojp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2ssIHRoaXMsICJXZWJDb3JlOiBMb2NhbFN0b3JhZ2Ui
KTsKICAgICByZXR1cm4gbV90aHJlYWRJRDsKIH0KIAotdm9pZCogTG9jYWxTdG9yYWdlVGhyZWFk
Ojpsb2NhbFN0b3JhZ2VUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCit2b2lkKiBMb2NhbFN0b3Jh
Z2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnRDYWxsYmFjayh2b2lkKiB0aHJlYWQpCiB7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PExvY2FsU3RvcmFnZVRocmVhZCo+KHRocmVhZCktPmxvY2FsU3Rv
cmFnZVRocmVhZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxMb2NhbFN0b3JhZ2VUaHJlYWQq
Pih0aHJlYWQpLT50aHJlYWRFbnRyeVBvaW50KCk7CiB9CiAKLXZvaWQqIExvY2FsU3RvcmFnZVRo
cmVhZDo6bG9jYWxTdG9yYWdlVGhyZWFkKCkKK3ZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6dGhy
ZWFkRW50cnlQb2ludCgpCiB7Ci0gICAgewotICAgICAgICAvLyBXYWl0IGZvciBMb2NhbFN0b3Jh
Z2VUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxldGUuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2so
bV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICB9Ci0KKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlVGFz
az4gdGFzazsKICAgICAgICAgaWYgKCFtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spKQpAQCAt
NzcsNTQgKzczLDM1IEBAIHZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6bG9jYWxTdG9yYWdlVGgK
ICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKICAgICB9CiAKLSAgICAvLyBEZXRhY2ggdGhl
IHRocmVhZCBzbyBpdHMgcmVzb3VyY2VzIGFyZSBubyBsb25nZXIgb2YgYW55IGNvbmNlcm4gdG8g
YW55b25lIGVsc2UKLSAgICBkZXRhY2hUaHJlYWQobV90aHJlYWRJRCk7Ci0gICAgbV90aHJlYWRJ
RCA9IDA7Ci0KLSAgICAvLyBDbGVhciB0aGUgc2VsZiByZWZwdHIsIHBvc3NpYmx5IHJlc3VsdGlu
ZyBpbiBkZWxldGlvbgotICAgIG1fc2VsZlJlZiA9IDA7Ci0KICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnNjaGVkdWxlSW1wb3J0KFN0b3JhZ2VBcmVhU3luYyog
YXJlYSkKLXsKLSAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWRJRCk7Ci0g
ICAgbV9xdWV1ZS5hcHBlbmQoTG9jYWxTdG9yYWdlVGFzazo6Y3JlYXRlSW1wb3J0KGFyZWEpKTsK
LX0KLQotdm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnNjaGVkdWxlU3luYyhTdG9yYWdlQXJlYVN5
bmMqIGFyZWEpCit2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6c2NoZWR1bGVUYXNrKFBhc3NSZWZQ
dHI8TG9jYWxTdG9yYWdlVGFzaz4gdGFzaykKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZElEKTsKLSAgICBtX3F1
ZXVlLmFwcGVuZChMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVTeW5jKGFyZWEpKTsKKyAgICBtX3F1
ZXVlLmFwcGVuZCh0YXNrKTsKIH0KIAogdm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0
ZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIC8vIElkZWFsbHkgd2Un
ZCBuZXZlciBiZSBraWxsaW5nIGEgdGhyZWFkIHRoYXQgd2Fzbid0IGxpdmUsIHNvIEFTU0VSVCBp
dC4KLSAgICAvLyBCdXQgaWYgd2UgZG8gaW4gYSByZWxlYXNlIGJ1aWxkLCBtYWtlIHN1cmUgdG8g
bm90IHdhaXQgb24gYSBjb25kaXRpb24gdGhhdCB3aWxsIG5ldmVyIGdldCBzaWduYWxsZWQKICAg
ICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWRJRCk7CisgICAgLy8gRXZlbiBp
biB3ZWlyZCwgZXhjZXB0aW9uYWwgY2FzZXMsIGRvbid0IHdhaXQgb24gYSBub25leGlzdGVudCB0
aHJlYWQgdG8gdGVybWluYXRlLgogICAgIGlmICghbV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgdm9pZCogcmV0dXJuVmFsdWU7CiAgICAgbV9xdWV1ZS5hcHBlbmQoTG9jYWxTdG9y
YWdlVGFzazo6Y3JlYXRlVGVybWluYXRlKHRoaXMpKTsKLQotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3Rlcm1pbmF0ZUxvY2spOwotICAgIHdoaWxlICghbV90ZXJtaW5hdGVkKQotICAgICAgICBt
X3Rlcm1pbmF0ZUNvbmRpdGlvbi53YWl0KG1fdGVybWluYXRlTG9jayk7CisgICAgd2FpdEZvclRo
cmVhZENvbXBsZXRpb24obV90aHJlYWRJRCwgJnJldHVyblZhbHVlKTsKKyAgICBBU1NFUlQobV9x
dWV1ZS5raWxsZWQoKSk7CisgICAgbV90aHJlYWRJRCA9IDA7CiB9CiAKIHZvaWQgTG9jYWxTdG9y
YWdlVGhyZWFkOjpwZXJmb3JtVGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKLQogICAgIG1fcXVldWUua2lsbCgpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGVybWluYXRlTG9jayk7Ci0gICAgbV90ZXJtaW5hdGVkID0gdHJ1ZTsKLSAgICBtX3Rlcm1pbmF0
ZUNvbmRpdGlvbi5zaWduYWwoKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2Fs
U3RvcmFnZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VUaHJlYWQuaAkocmV2aXNpb24gNTAzMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTM5LDM1ICs0MCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgTG9jYWxTdG9yYWdlVGFzazsKIAogICAgIC8vIEZJWE1FOiBSZW5hbWUg
dGhpcyBjbGFzcyB0byBTdG9yYWdlVGhyZWFkCi0gICAgY2xhc3MgTG9jYWxTdG9yYWdlVGhyZWFk
IDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8TG9jYWxTdG9yYWdlVGhyZWFkPiB7CisgICAgY2xh
c3MgTG9jYWxTdG9yYWdlVGhyZWFkIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsU3RvcmFnZVRocmVhZD4gY3JlYXRlKCk7
CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsU3RvcmFnZVRocmVhZD4gY3JlYXRlKCk7
CisgICAgICAgIH5Mb2NhbFN0b3JhZ2VUaHJlYWQoKTsKIAogICAgICAgICBib29sIHN0YXJ0KCk7
Ci0KLSAgICAgICAgdm9pZCBzY2hlZHVsZUltcG9ydChTdG9yYWdlQXJlYVN5bmMqKTsKLSAgICAg
ICAgdm9pZCBzY2hlZHVsZVN5bmMoU3RvcmFnZUFyZWFTeW5jKik7Ci0KLSAgICAgICAgLy8gQ2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIHRvIHN5bmNocm9ub3VzbHkgc2h1dCBkb3duIHRoaXMg
dGhyZWFkCiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7Ci0gICAgICAgIC8vIEJhY2tncm91bmQg
dGhyZWFkIHBhcnQgb2YgdGhlIHRlcm1pbmF0ZSBwcm9jZWR1cmUKKyAgICAgICAgdm9pZCBzY2hl
ZHVsZVRhc2soUGFzc1JlZlB0cjxMb2NhbFN0b3JhZ2VUYXNrPik7CisKKyAgICAgICAgLy8gQmFj
a2dyb3VuZCB0aHJlYWQgcGFydCBvZiB0aGUgdGVybWluYXRlIHByb2NlZHVyZS4KICAgICAgICAg
dm9pZCBwZXJmb3JtVGVybWluYXRlKCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBMb2NhbFN0
b3JhZ2VUaHJlYWQoKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCogbG9jYWxTdG9yYWdlVGhyZWFk
U3RhcnQodm9pZCopOwotICAgICAgICB2b2lkKiBsb2NhbFN0b3JhZ2VUaHJlYWQoKTsKKyAgICAg
ICAgLy8gQ2FsbGVkIG9uIGJhY2tncm91bmQgdGhyZWFkLgorICAgICAgICBzdGF0aWMgdm9pZCog
dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKHZvaWQqKTsKKyAgICAgICAgdm9pZCogdGhyZWFkRW50
cnlQb2ludCgpOwogCi0gICAgICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKICAgICAg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgICAgICBSZWZQdHI8TG9jYWxTdG9y
YWdlVGhyZWFkPiBtX3NlbGZSZWY7Ci0KICAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxMb2Nh
bFN0b3JhZ2VUYXNrPiA+IG1fcXVldWU7Ci0KLSAgICAgICAgTXV0ZXggbV90ZXJtaW5hdGVMb2Nr
OwotICAgICAgICBUaHJlYWRDb25kaXRpb24gbV90ZXJtaW5hdGVDb25kaXRpb247Ci0gICAgICAg
IGJvb2wgbV90ZXJtaW5hdGVkOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCShyZXZpc2lvbiA1MDMxMCkK
KysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCwxOSArNDgsMjEgQEAgUGFzc1JlZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+IFN0b3Jh
Z2VTeQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBT
dHJpbmcmIHBhdGgpCi0gICAgOiBtX3BhdGgocGF0aC5jcm9zc1RocmVhZFN0cmluZygpKQorICAg
IDogbV90aHJlYWQoTG9jYWxTdG9yYWdlVGhyZWFkOjpjcmVhdGUoKSkKKyAgICAsIG1fcGF0aChw
YXRoLmNyb3NzVGhyZWFkU3RyaW5nKCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoIW1fcGF0aC5pc0VtcHR5KCkpOwotICAgIG1fdGhyZWFkID0gTG9jYWxTdG9y
YWdlVGhyZWFkOjpjcmVhdGUoKTsKICAgICBtX3RocmVhZC0+c3RhcnQoKTsKIH0KIAogU3RvcmFn
ZVN5bmNNYW5hZ2VyOjp+U3RvcmFnZVN5bmNNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVCghbV90aHJlYWQpOwogfQogCisvLyBDYWxsZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KIFN0cmluZyBTdG9yYWdlU3luY01hbmFnZXI6OmZ1bGxEYXRhYmFz
ZUZpbGVuYW1lKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKG9yaWdpbik7
CkBAIC04NSwxOSArODcsMTggQEAgdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmNsb3NlKCkKIGJv
b2wgU3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZUltcG9ydChQYXNzUmVmUHRyPFN0b3JhZ2VB
cmVhU3luYz4gYXJlYSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCisgICAgQVNT
RVJUKG1fdGhyZWFkKTsKICAgICBpZiAobV90aHJlYWQpCi0gICAgICAgIG1fdGhyZWFkLT5zY2hl
ZHVsZUltcG9ydChhcmVhLmdldCgpKTsKLQorICAgICAgICBtX3RocmVhZC0+c2NoZWR1bGVUYXNr
KExvY2FsU3RvcmFnZVRhc2s6OmNyZWF0ZUltcG9ydChhcmVhLmdldCgpKSk7CiAgICAgcmV0dXJu
IG1fdGhyZWFkOwogfQogCiB2b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6c2NoZWR1bGVTeW5jKFBh
c3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBhcmVhKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0KKyAgICBBU1NFUlQobV90aHJlYWQpOwogICAgIGlmIChtX3RocmVhZCkKLSAgICAg
ICAgbV90aHJlYWQtPnNjaGVkdWxlU3luYyhhcmVhLmdldCgpKTsKKyAgICAgICAgbV90aHJlYWQt
PnNjaGVkdWxlVGFzayhMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVTeW5jKGFyZWEuZ2V0KCkpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3lu
Y01hbmFnZXIuaAkocmV2aXNpb24gNTAzMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZh
dGU6CiAgICAgICAgIFN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgpOwogCi0g
ICAgICAgIFJlZlB0cjxMb2NhbFN0b3JhZ2VUaHJlYWQ+IG1fdGhyZWFkOworICAgICAgICBPd25Q
dHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBtX3RocmVhZDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcg
bWVtYmVycyBhcmUgc3ViamVjdCB0byB0aHJlYWQgc3luY2hyb25pemF0aW9uIGlzc3VlcwogICAg
IHB1YmxpYzo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42517</attachid>
            <date>2009-11-04 13:54:52 -0800</date>
            <delta_ts>2009-11-05 00:14:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30935-20091104135451.patch</filename>
            <type>text/plain</type>
            <size>10126</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMTEtMDQgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2ltcGxpZnkgTG9jYWxTdG9yYWdlVGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDkzNQorCisgICAgICAgIFRoaXMgaXMgYSByZS1zdWJtaXQg
b2YgNTA1MTkuICBMb2NhbFN0b3JhZ2VUYXNrIHNob3VsZCBoYXZlIG5ldmVyIGJlZW4gcmVmCisg
ICAgICAgIGNvdW50ZWQuICBJJ3ZlIHJlbW92ZWQgdGhhdCBhbmQgc3dpdGNoZWQgYSBQYXNzUmVm
UHRyIG92ZXIgdG8gYSBQYXNzT3duUHRyLgorCisgICAgICAgIE9uIExvY2FsU3RvcmFnZXRocmVh
ZDogUmVtb3ZlIHJlZmVyZW5jZSBjb3VudGluZy4gR2V0IHJpZCBvZiBsb2NraW5nLiBNYWtlIHNv
bWUKKyAgICAgICAgb2YgdGhlIG1ldGhvZCBuYW1lcyBhIGJpdCBtb3JlIGNsZWFyLiBBc3NlcnQg
cHJvcGVyIHRocmVhZCB1c2FnZS4gSm9pbiByYXRoZXIKKyAgICAgICAgdGhhbiBkZXRhY2hpbmcg
dGhlIHRocmVhZCBhbmQgZG9pbmcgYW4gYWQtaG9jIGZvcm0gb2Ygam9pbi4gQXZvaWQgdG91Y2hp
bmcKKyAgICAgICAgdmFyaWFibGVzIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB3aGVuIHNpbXBs
ZSB0byBkbyBzby4gIEFsc28gY3JlYXRlIGEgZ2VuZXJpYworICAgICAgICBzY2hlZHVsZVRhc2sg
ZnVuY3Rpb24gcmF0aGVyIHRoYW4gb25lIGZvciBlYWNoIHRhc2suCisKKyAgICAgICAgTm8gYmVo
YXZpb3Igc2hvdWxkIGhhdmUgY2hhbmdlZC4KKworICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9y
YWdlVGFzay5oOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6TG9jYWxTdG9yYWdlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6fkxvY2FsU3RvcmFnZVRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnNjaGVkdWxlVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnBlcmZvcm1UZXJtaW5hdGUpOgorICAgICAgICAqIHN0
b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlU3lu
Y01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyOjpTdG9y
YWdlU3luY01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyOjp+
U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdl
cjo6c2NoZWR1bGVJbXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2Vy
OjpzY2hlZHVsZVN5bmMpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmg6
CisKIDIwMDktMTEtMDQgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgJKHJldmlzaW9uIDUwNTI4KQorKysgV2ViQ29yZS9zdG9y
YWdlL0xvY2FsU3RvcmFnZVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTG9jYWxTdG9yYWdlVGhyZWFkOwogCiAgICAg
Ly8gRklYTUU6IFJlbmFtZSB0aGlzIGNsYXNzIHRvIFN0b3JhZ2VUYXNrCi0gICAgY2xhc3MgTG9j
YWxTdG9yYWdlVGFzayA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPExvY2FsU3RvcmFnZVRhc2s+
IHsKKyAgICBjbGFzcyBMb2NhbFN0b3JhZ2VUYXNrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGVudW0gVHlwZSB7IEFyZWFJbXBvcnQsIEFyZWFTeW5jLCBUZXJt
aW5hdGVUaHJlYWQgfTsKIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVh
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5j
cHAJKHJldmlzaW9uIDUwNTI4KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVh
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkzICszMyw3MCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBMb2NhbFN0b3JhZ2VUaHJl
YWQ6OmNyZWF0ZSgpCitQYXNzT3duUHRyPExvY2FsU3RvcmFnZVRocmVhZD4gTG9jYWxTdG9yYWdl
VGhyZWFkOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9jYWxTdG9yYWdl
VGhyZWFkKTsKKyAgICByZXR1cm4gbmV3IExvY2FsU3RvcmFnZVRocmVhZDsKIH0KIAogTG9jYWxT
dG9yYWdlVGhyZWFkOjpMb2NhbFN0b3JhZ2VUaHJlYWQoKQogICAgIDogbV90aHJlYWRJRCgwKQot
ICAgICwgbV90ZXJtaW5hdGVkKGZhbHNlKQogewotICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CiAK
LWJvb2wgTG9jYWxTdG9yYWdlVGhyZWFkOjpzdGFydCgpCitMb2NhbFN0b3JhZ2VUaHJlYWQ6On5M
b2NhbFN0b3JhZ2VUaHJlYWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVh
dGlvbk11dGV4KTsKLQotICAgIGlmIChtX3RocmVhZElEKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIG1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoTG9jYWxTdG9yYWdlVGhyZWFkOjpsb2Nh
bFN0b3JhZ2VUaHJlYWRTdGFydCwgdGhpcywgIldlYkNvcmU6IExvY2FsU3RvcmFnZSIpOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX3RocmVhZElEKTsKK30KIAor
Ym9vbCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmICghbV90aHJlYWRJRCkKKyAgICAgICAgbV90aHJlYWRJRCA9IGNyZWF0
ZVRocmVhZChMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnRDYWxsYmFjaywgdGhp
cywgIldlYkNvcmU6IExvY2FsU3RvcmFnZSIpOwogICAgIHJldHVybiBtX3RocmVhZElEOwogfQog
Ci12b2lkKiBMb2NhbFN0b3JhZ2VUaHJlYWQ6OmxvY2FsU3RvcmFnZVRocmVhZFN0YXJ0KHZvaWQq
IHRocmVhZCkKK3ZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxi
YWNrKHZvaWQqIHRocmVhZCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TG9jYWxTdG9yYWdl
VGhyZWFkKj4odGhyZWFkKS0+bG9jYWxTdG9yYWdlVGhyZWFkKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PExvY2FsU3RvcmFnZVRocmVhZCo+KHRocmVhZCktPnRocmVhZEVudHJ5UG9pbnQoKTsK
IH0KIAotdm9pZCogTG9jYWxTdG9yYWdlVGhyZWFkOjpsb2NhbFN0b3JhZ2VUaHJlYWQoKQordm9p
ZCogTG9jYWxTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50KCkKIHsKLSAgICB7Ci0gICAg
ICAgIC8vIFdhaXQgZm9yIExvY2FsU3RvcmFnZVRocmVhZDo6c3RhcnQoKSB0byBjb21wbGV0ZS4K
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgIH0K
LQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIHdoaWxlIChPd25QdHI8TG9jYWxT
dG9yYWdlVGFzaz4gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkKICAgICAgICAgdGFz
ay0+cGVyZm9ybVRhc2soKTsKIAotICAgIC8vIERldGFjaCB0aGUgdGhyZWFkIHNvIGl0cyByZXNv
dXJjZXMgYXJlIG5vIGxvbmdlciBvZiBhbnkgY29uY2VybiB0byBhbnlvbmUgZWxzZQotICAgIGRl
dGFjaFRocmVhZChtX3RocmVhZElEKTsKLSAgICBtX3RocmVhZElEID0gMDsKLQotICAgIC8vIENs
ZWFyIHRoZSBzZWxmIHJlZnB0ciwgcG9zc2libHkgcmVzdWx0aW5nIGluIGRlbGV0aW9uCi0gICAg
bV9zZWxmUmVmID0gMDsKLQogICAgIHJldHVybiAwOwogfQogCi12b2lkIExvY2FsU3RvcmFnZVRo
cmVhZDo6c2NoZWR1bGVJbXBvcnQoU3RvcmFnZUFyZWFTeW5jKiBhcmVhKQotewotICAgIEFTU0VS
VCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZElEKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChM
b2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVJbXBvcnQoYXJlYSkpOwotfQotCi12b2lkIExvY2FsU3Rv
cmFnZVRocmVhZDo6c2NoZWR1bGVTeW5jKFN0b3JhZ2VBcmVhU3luYyogYXJlYSkKK3ZvaWQgTG9j
YWxTdG9yYWdlVGhyZWFkOjpzY2hlZHVsZVRhc2soUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNr
PiB0YXNrKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1
ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkSUQpOwotICAgIG1fcXVldWUuYXBwZW5kKExvY2FsU3Rv
cmFnZVRhc2s6OmNyZWF0ZVN5bmMoYXJlYSkpOworICAgIG1fcXVldWUuYXBwZW5kKHRhc2spOwog
fQogCiB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotCi0gICAgLy8gSWRlYWxseSB3ZSdkIG5ldmVyIGJlIGtpbGxpbmcg
YSB0aHJlYWQgdGhhdCB3YXNuJ3QgbGl2ZSwgc28gQVNTRVJUIGl0LgotICAgIC8vIEJ1dCBpZiB3
ZSBkbyBpbiBhIHJlbGVhc2UgYnVpbGQsIG1ha2Ugc3VyZSB0byBub3Qgd2FpdCBvbiBhIGNvbmRp
dGlvbiB0aGF0IHdpbGwgbmV2ZXIgZ2V0IHNpZ25hbGxlZAogICAgIEFTU0VSVCghbV9xdWV1ZS5r
aWxsZWQoKSAmJiBtX3RocmVhZElEKTsKKyAgICAvLyBFdmVuIGluIHdlaXJkLCBleGNlcHRpb25h
bCBjYXNlcywgZG9uJ3Qgd2FpdCBvbiBhIG5vbmV4aXN0ZW50IHRocmVhZCB0byB0ZXJtaW5hdGUu
CiAgICAgaWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47CiAKKyAgICB2b2lkKiByZXR1
cm5WYWx1ZTsKICAgICBtX3F1ZXVlLmFwcGVuZChMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVUZXJt
aW5hdGUodGhpcykpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGVybWluYXRlTG9jayk7
Ci0gICAgd2hpbGUgKCFtX3Rlcm1pbmF0ZWQpCi0gICAgICAgIG1fdGVybWluYXRlQ29uZGl0aW9u
LndhaXQobV90ZXJtaW5hdGVMb2NrKTsKKyAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3Ro
cmVhZElELCAmcmV0dXJuVmFsdWUpOworICAgIEFTU0VSVChtX3F1ZXVlLmtpbGxlZCgpKTsKKyAg
ICBtX3RocmVhZElEID0gMDsKIH0KIAogdm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnBlcmZvcm1U
ZXJtaW5hdGUoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCiAgICAgbV9xdWV1
ZS5raWxsKCk7Ci0KLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90ZXJtaW5hdGVMb2NrKTsKLSAg
ICBtX3Rlcm1pbmF0ZWQgPSB0cnVlOwotICAgIG1fdGVybWluYXRlQ29uZGl0aW9uLnNpZ25hbCgp
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCShyZXZpc2lv
biA1MDUyOCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
IApAQCAtMzksMzUgKzQwLDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBMb2Nh
bFN0b3JhZ2VUYXNrOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGNsYXNzIHRvIFN0b3Jh
Z2VUaHJlYWQKLSAgICBjbGFzcyBMb2NhbFN0b3JhZ2VUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVNoYXJlZDxMb2NhbFN0b3JhZ2VUaHJlYWQ+IHsKKyAgICBjbGFzcyBMb2NhbFN0b3JhZ2VUaHJl
YWQgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBjcmVhdGUoKTsKKyAgICAgICAgc3RhdGljIFBh
c3NPd25QdHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBjcmVhdGUoKTsKKyAgICAgICAgfkxvY2FsU3Rv
cmFnZVRocmVhZCgpOwogCiAgICAgICAgIGJvb2wgc3RhcnQoKTsKLQotICAgICAgICB2b2lkIHNj
aGVkdWxlSW1wb3J0KFN0b3JhZ2VBcmVhU3luYyopOwotICAgICAgICB2b2lkIHNjaGVkdWxlU3lu
YyhTdG9yYWdlQXJlYVN5bmMqKTsKLQotICAgICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQgdG8gc3luY2hyb25vdXNseSBzaHV0IGRvd24gdGhpcyB0aHJlYWQKICAgICAgICAgdm9p
ZCB0ZXJtaW5hdGUoKTsKLSAgICAgICAgLy8gQmFja2dyb3VuZCB0aHJlYWQgcGFydCBvZiB0aGUg
dGVybWluYXRlIHByb2NlZHVyZQorICAgICAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRy
PExvY2FsU3RvcmFnZVRhc2s+KTsKKworICAgICAgICAvLyBCYWNrZ3JvdW5kIHRocmVhZCBwYXJ0
IG9mIHRoZSB0ZXJtaW5hdGUgcHJvY2VkdXJlLgogICAgICAgICB2b2lkIHBlcmZvcm1UZXJtaW5h
dGUoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIExvY2FsU3RvcmFnZVRocmVhZCgpOwogCi0g
ICAgICAgIHN0YXRpYyB2b2lkKiBsb2NhbFN0b3JhZ2VUaHJlYWRTdGFydCh2b2lkKik7Ci0gICAg
ICAgIHZvaWQqIGxvY2FsU3RvcmFnZVRocmVhZCgpOworICAgICAgICAvLyBDYWxsZWQgb24gYmFj
a2dyb3VuZCB0aHJlYWQuCisgICAgICAgIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50Q2Fs
bGJhY2sodm9pZCopOworICAgICAgICB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KCk7CiAKLSAgICAg
ICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OwogICAgICAgICBUaHJlYWRJZGVudGlmaWVy
IG1fdGhyZWFkSUQ7Ci0gICAgICAgIFJlZlB0cjxMb2NhbFN0b3JhZ2VUaHJlYWQ+IG1fc2VsZlJl
ZjsKLQogICAgICAgICBNZXNzYWdlUXVldWU8TG9jYWxTdG9yYWdlVGFzaz4gbV9xdWV1ZTsKLQot
ICAgICAgICBNdXRleCBtX3Rlcm1pbmF0ZUxvY2s7Ci0gICAgICAgIFRocmVhZENvbmRpdGlvbiBt
X3Rlcm1pbmF0ZUNvbmRpdGlvbjsKLSAgICAgICAgYm9vbCBtX3Rlcm1pbmF0ZWQ7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5jcHAJKHJldmlzaW9uIDUwNTI4KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE5ICs0OCwyMSBAQCBQYXNzUmVm
UHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFnZVN5CiB9CiAKIFN0b3JhZ2VTeW5jTWFuYWdl
cjo6U3RvcmFnZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKLSAgICA6IG1fcGF0aChw
YXRoLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgOiBtX3RocmVhZChMb2NhbFN0b3JhZ2VUaHJl
YWQ6OmNyZWF0ZSgpKQorICAgICwgbV9wYXRoKHBhdGguY3Jvc3NUaHJlYWRTdHJpbmcoKSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9wYXRoLmlzRW1wdHko
KSk7Ci0gICAgbV90aHJlYWQgPSBMb2NhbFN0b3JhZ2VUaHJlYWQ6OmNyZWF0ZSgpOwogICAgIG1f
dGhyZWFkLT5zdGFydCgpOwogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6On5TdG9yYWdlU3luY01h
bmFnZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX3Ro
cmVhZCk7CiB9CiAKKy8vIENhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogU3RyaW5nIFN0
b3JhZ2VTeW5jTWFuYWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKIHsKICAgICBBU1NFUlQob3JpZ2luKTsKQEAgLTg1LDE5ICs4NywxOCBAQCB2b2lkIFN0
b3JhZ2VTeW5jTWFuYWdlcjo6Y2xvc2UoKQogYm9vbCBTdG9yYWdlU3luY01hbmFnZXI6OnNjaGVk
dWxlSW1wb3J0KFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBhcmVhKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0KKyAgICBBU1NFUlQobV90aHJlYWQpOwogICAgIGlmIChtX3Ro
cmVhZCkKLSAgICAgICAgbV90aHJlYWQtPnNjaGVkdWxlSW1wb3J0KGFyZWEuZ2V0KCkpOwotCisg
ICAgICAgIG1fdGhyZWFkLT5zY2hlZHVsZVRhc2soTG9jYWxTdG9yYWdlVGFzazo6Y3JlYXRlSW1w
b3J0KGFyZWEuZ2V0KCkpKTsKICAgICByZXR1cm4gbV90aHJlYWQ7CiB9CiAKIHZvaWQgU3RvcmFn
ZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZVN5bmMoUGFzc1JlZlB0cjxTdG9yYWdlQXJlYVN5bmM+IGFy
ZWEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQorICAgIEFTU0VSVChtX3RocmVh
ZCk7CiAgICAgaWYgKG1fdGhyZWFkKQotICAgICAgICBtX3RocmVhZC0+c2NoZWR1bGVTeW5jKGFy
ZWEuZ2V0KCkpOworICAgICAgICBtX3RocmVhZC0+c2NoZWR1bGVUYXNrKExvY2FsU3RvcmFnZVRh
c2s6OmNyZWF0ZVN5bmMoYXJlYS5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oCShyZXZpc2lvbiA1MDUyOCkK
KysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsNyArNTMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RvcmFnZVN5bmNNYW5h
Z2VyKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKLSAgICAgICAgUmVmUHRyPExvY2FsU3RvcmFnZVRo
cmVhZD4gbV90aHJlYWQ7CisgICAgICAgIE93blB0cjxMb2NhbFN0b3JhZ2VUaHJlYWQ+IG1fdGhy
ZWFkOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXJzIGFyZSBzdWJqZWN0IHRvIHRocmVh
ZCBzeW5jaHJvbml6YXRpb24gaXNzdWVzCiAgICAgcHVibGljOg==
</data>
<flag name="review"
          id="24059"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>