<?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>40767</bug_id>
          
          <creation_ts>2010-06-17 02:25:48 -0700</creation_ts>
          <short_desc>DOM storage should delete databases when they are empty.</short_desc>
          <delta_ts>2010-06-21 07:50:48 -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>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>0</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>239307</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-06-17 02:25:48 -0700</bug_when>
    <thetext>Even if a page clears its local storage, the database file for it stays around, and there is currently no mechanism that deletes them.

After doing the &quot;final sync&quot; of a storage area, the StorageAreaSyncMaster should see if the database is empty, and in that case delete it. This way, an empty local storage will never have a database file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239550</commentid>
    <comment_count>1</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-17 13:19:05 -0700</bug_when>
    <thetext>Sounds like a good plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239801</commentid>
    <comment_count>2</comment_count>
      <attachid>59079</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-06-18 01:24:40 -0700</bug_when>
    <thetext>Created attachment 59079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239802</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-18 01:26:08 -0700</bug_when>
    <thetext>Attachment 59079 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/storage/StorageAreaSync.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239807</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-06-18 01:37:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 59079 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
&gt; WebCore/storage/StorageAreaSync.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Total errors found: 1 in 8 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Sorry about that. I now realise the sort should be case sensitive (and the original file must have been in error to begin with).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239808</commentid>
    <comment_count>5</comment_count>
      <attachid>59081</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-06-18 01:37:56 -0700</bug_when>
    <thetext>Created attachment 59081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240238</commentid>
    <comment_count>6</comment_count>
      <attachid>59081</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-18 18:19:51 -0700</bug_when>
    <thetext>Comment on attachment 59081
Patch

Looks good to me....2 double-checking type questions tho...


WebCore/storage/StorageAreaSync.cpp:421
 +          m_database.close();
Are we super extra ultra sure that there&apos;s no way the database can be used after it&apos;s closed?  I almost wondr if we should make it an OwnPtr and null it out here so that if we do try to use it later we crash.

WebCore/storage/StorageAreaSync.cpp:403
 +      if (!m_database.isOpen())
When can this happen?  Only if it was never opened or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240627</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-06-21 01:27:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 59081 [details])
&gt; Looks good to me....2 double-checking type questions tho...
&gt; 
&gt; 
&gt; WebCore/storage/StorageAreaSync.cpp:421
&gt;  +          m_database.close();
&gt; Are we super extra ultra sure that there&apos;s no way the database can be used after it&apos;s closed?  I almost wondr if we should make it an OwnPtr and null it out here so that if we do try to use it later we crash.
Pretty sure at least. The DeleteEmptyDatabase task is scheduled in scheduleFinalSync(), which is called by StorageAreaImpl::close() which is called by StorageNamespaceImpl::close() which is called by StorageNamespaceImpl&apos;s destructor. In effect, StorageAreaImpl should be destructed after deleteEmptyDatabases().

Anyway, the member functions in StorageAreaImpl that use m_database all check for it to be open first, so I don&apos;t really see any danger here.

&gt; 
&gt; WebCore/storage/StorageAreaSync.cpp:403
&gt;  +      if (!m_database.isOpen())
&gt; When can this happen?  Only if it was never opened or something?
Exactly. Since http://trac.webkit.org/changeset/61023, if there was no previous database file, no new database file is created (thus no db opened) unless something needs to be written to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240705</commentid>
    <comment_count>8</comment_count>
      <attachid>59081</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-21 07:50:44 -0700</bug_when>
    <thetext>Comment on attachment 59081
Patch

Clearing flags on attachment: 59081

Committed r61542: &lt;http://trac.webkit.org/changeset/61542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240706</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-21 07:50:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59079</attachid>
            <date>2010-06-18 01:24:40 -0700</date>
            <delta_ts>2010-06-18 01:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40767-20100618092438.patch</filename>
            <type>text/plain</type>
            <size>9365</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmU1NTYyZmU4M2Q0YmIwOTI2ZGJkZDZiYzE4Mzc1N2I4M2Q5YjU0OS4uMDMxNzRlZDkwNjYxYmRl
ZWUzZTkwZDVkYzAzMzFiYTNlZTVkNDllMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNi0xOCAgSGFu
cyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZSBET00gc3RvcmFnZSBkYXRhYmFzZXMgd2hl
biB0aGV5IGFyZSBlbXB0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwNzY3CisKKyAgICAgICAgRXZlbiBpZiBhIHBhZ2UgY2xlYXJzIGl0cyBsb2Nh
bCBzdG9yYWdlLCB0aGUgZGF0YWJhc2UgZmlsZSBmb3IgaXQgc3RheXMgYXJvdW5kLAorICAgICAg
ICBhbmQgdGhlcmUgaXMgY3VycmVudGx5IG5vIG1lY2hhbmlzbSB0aGF0IGRlbGV0ZXMgdGhlbS4K
KworICAgICAgICBBZnRlciBkb2luZyB0aGUgImZpbmFsIHN5bmMiIG9mIGEgc3RvcmFnZSBhcmVh
LCB0aGUgU3RvcmFnZUFyZWFTeW5jTWFzdGVyIHNob3VsZAorICAgICAgICBzZWUgaWYgdGhlIGRh
dGFiYXNlIGlzIGVtcHR5LCBhbmQgaW4gdGhhdCBjYXNlIGRlbGV0ZSBpdC4KKworICAgICAgICBU
ZXN0czoKKyAgICAgICAgIG1hbnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtZW1wdHktZGF0YWJhc2Uu
aHRtbAorCisgICAgICAgICogbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS1lbXB0eS1kYXRhYmFz
ZS5odG1sOgorICAgICAgICBBZGRlZCBsaW5rIHRvIGNsZWFyIGxvY2FsIHN0b3JhZ2UgZm9yIHRl
c3RpbmcgdGhhdCB0aGUgZmlsZSBpcyByZW1vdmVkLgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxT
dG9yYWdlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUYXNrOjpMb2Nh
bFN0b3JhZ2VUYXNrKToKKyAgICAgICAgQWRkZWQgbG9jYWwgc3RvcmFnZSB0YXNrIHR5cGUgRGVs
ZXRlRW1wdHlEYXRhYmFzZS4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRhc2s6OnBl
cmZvcm1UYXNrKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VUYXNrLmg6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUYXNrOjopOgorICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRhc2s6OmNyZWF0ZURlbGV0
ZUVtcHR5RGF0YWJhc2UpOgorICAgICAgICBEaXR0by4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnNjaGVk
dWxlRmluYWxTeW5jKToKKyAgICAgICAgV2hlbiBzY2hlZHVsaW5nIGZpbmFsIHN5bmMsIGFsc28g
c2NoZWR1bGUgRGVsZXRlRW1wdHlEYXRhYmFzZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhU3luYzo6c3luYyk6CisgICAgICAgIFJldHVybiBlYXJseSBpZiBmaW5hbCBzeW5jIGhhcyBu
b3RoaW5nIHRvIHN5bmMuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OmRlbGV0
ZUVtcHR5RGF0YWJhc2UpOgorICAgICAgICBBZGRlZCBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGRh
dGFiYXNlIGlzIGVtcHR5IGFuZCBpbiB0aGF0IGNhc2UgZGVsZXRlIGl0LgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmg6CisgICAgICAgIERpdHRvLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5j
TWFuYWdlcjo6c2NoZWR1bGVEZWxldGVFbXB0eURhdGFiYXNlKToKKyAgICAgICAgQWRkZWQgZnVu
Y3Rpb24gZm9yIHNjaGVkdWxpbmcgRGVsZXRlRW1wdHlEYXRhYmFzZSB0YXNrLgorICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmg6CisgICAgICAgIERpdHRvLgorCiAyMDEwLTA2
LTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjEzNzkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtZW1wdHktZGF0YWJhc2UuaHRtbCBiL1dlYkNvcmUvbWFu
dWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS1lbXB0eS1kYXRhYmFzZS5odG1sCmluZGV4IGExNjQxMjc1
YmFkMTdjNmE1YWQ5ZWQ4YTczYWFjMTkyNzE5MDRhZmIuLmQwZmNjNDExNjY4YjU5ZGU0MGJiOTdi
M2I4MTMyZjQ4MWNlOWYzZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xvY2Fs
c3RvcmFnZS1lbXB0eS1kYXRhYmFzZS5odG1sCisrKyBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xv
Y2Fsc3RvcmFnZS1lbXB0eS1kYXRhYmFzZS5odG1sCkBAIC04LDYgKzgsOSBAQCBTaW5jZSBubyBk
YXRhIGhhcyBiZWVuIHN0b3JlZCwgbm8gZGF0YWJhc2UgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNy
ZWF0ZWQuPC9wPgogCiA8cD5JZiB5b3UgY2xpY2sgPGEgaHJlZj0iamF2YXNjcmlwdDpsb2NhbFN0
b3JhZ2Uuc2V0SXRlbSgnYmFyJywgJ2JheicpOyI+aGVyZTwvYT4sIGRhdGEgd2lsbCBiZSBzdG9y
ZWQsIGFuZCBhIGRhdGFiYXNlIGZpbGUgc2hvdWxkIGJlIGNyZWF0ZWQuPC9wPgogCi08cD4oVGhp
cyBpcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQwMzAxIj5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMDE8L2E+
Lik8L3A+Cis8cD5JZiB5b3UgY2xpY2sgPGEgaHJlZj0iamF2YXNjcmlwdDpsb2NhbFN0b3JhZ2Uu
Y2xlYXIoKTsiPmhlcmU8L2E+LCB0aGUgbG9jYWwgc3RvcmFnZSB3aWxsIGJlIGNsZWFyZWQsIGFu
ZCB0aGUgZGF0YWJhc2UgZmlsZSBzaG91bGQgYmUgZ29uZSB3aGVuIHRoZSBicm93c2VyIGlzIGNs
b3NlZC48L3A+CisKKzxwPihUaGlzIGlzIGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMDEiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDMwMTwvYT4KK2FuZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NjciPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDc2NzwvYT4uKTwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VUYXNrLmNwcAppbmRleCAxMmNjMDgzYmVkMGE5MmMwYjhhZWY2Y2VkZGQ5MDg2NzQ5
YWZiNzZkLi5kMzFjOTkxNDkxN2ExY2E1ZTkyZGQ3NGFjNGM4MjU3M2VkNGFhM2JhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHAKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwCkBAIC0zOSw3ICszOSw3IEBAIExvY2FsU3RvcmFn
ZVRhc2s6OkxvY2FsU3RvcmFnZVRhc2soVHlwZSB0eXBlLCBTdG9yYWdlQXJlYVN5bmMqIGFyZWEp
CiAgICAgLCBtX3RocmVhZCgwKQogewogICAgIEFTU0VSVChtX2FyZWEpOwotICAgIEFTU0VSVCht
X3R5cGUgPT0gQXJlYUltcG9ydCB8fCBtX3R5cGUgPT0gQXJlYVN5bmMpOworICAgIEFTU0VSVCht
X3R5cGUgPT0gQXJlYUltcG9ydCB8fCBtX3R5cGUgPT0gQXJlYVN5bmMgfHwgbV90eXBlID09IERl
bGV0ZUVtcHR5RGF0YWJhc2UpOwogfQogCiBMb2NhbFN0b3JhZ2VUYXNrOjpMb2NhbFN0b3JhZ2VU
YXNrKFR5cGUgdHlwZSwgTG9jYWxTdG9yYWdlVGhyZWFkKiB0aHJlYWQpCkBAIC02NCw2ICs2NCw5
IEBAIHZvaWQgTG9jYWxTdG9yYWdlVGFzazo6cGVyZm9ybVRhc2soKQogICAgICAgICBjYXNlIEFy
ZWFTeW5jOgogICAgICAgICAgICAgbV9hcmVhLT5wZXJmb3JtU3luYygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRGVsZXRlRW1wdHlEYXRhYmFzZToKKyAgICAgICAgICAgIG1f
YXJlYS0+ZGVsZXRlRW1wdHlEYXRhYmFzZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVGVybWluYXRlVGhyZWFkOgogICAgICAgICAgICAgbV90aHJlYWQtPnBlcmZvcm1UZXJt
aW5hdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0xvY2FsU3RvcmFnZVRhc2suaCBiL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgK
aW5kZXggZGMzZTdlMmRhYzM1ZWM5ZWY5ZmE3MjgxZTdiMmZmNmIyMjQxMTAzYS4uOGQ1M2NlNGE1
MzY4YzViNjhmNWNjOTVmZjMzNzhlMDI5Nzk3N2M1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0xvY2FsU3RvcmFnZVRhc2suaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
VGFzay5oCkBAIC0zOSwxMiArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEZJ
WE1FOiBSZW5hbWUgdGhpcyBjbGFzcyB0byBTdG9yYWdlVGFzawogICAgIGNsYXNzIExvY2FsU3Rv
cmFnZVRhc2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51
bSBUeXBlIHsgQXJlYUltcG9ydCwgQXJlYVN5bmMsIFRlcm1pbmF0ZVRocmVhZCB9OworICAgICAg
ICBlbnVtIFR5cGUgeyBBcmVhSW1wb3J0LCBBcmVhU3luYywgRGVsZXRlRW1wdHlEYXRhYmFzZSwg
VGVybWluYXRlVGhyZWFkIH07CiAKICAgICAgICAgfkxvY2FsU3RvcmFnZVRhc2soKTsKIAogICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNrPiBjcmVhdGVJbXBvcnQoU3Rv
cmFnZUFyZWFTeW5jKiBhcmVhKSB7IHJldHVybiBuZXcgTG9jYWxTdG9yYWdlVGFzayhBcmVhSW1w
b3J0LCBhcmVhKTsgfQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNr
PiBjcmVhdGVTeW5jKFN0b3JhZ2VBcmVhU3luYyogYXJlYSkgeyByZXR1cm4gbmV3IExvY2FsU3Rv
cmFnZVRhc2soQXJlYVN5bmMsIGFyZWEpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPExv
Y2FsU3RvcmFnZVRhc2s+IGNyZWF0ZURlbGV0ZUVtcHR5RGF0YWJhc2UoU3RvcmFnZUFyZWFTeW5j
KiBhcmVhKSB7IHJldHVybiBuZXcgTG9jYWxTdG9yYWdlVGFzayhEZWxldGVFbXB0eURhdGFiYXNl
LCBhcmVhKTsgfQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNrPiBj
cmVhdGVUZXJtaW5hdGUoTG9jYWxTdG9yYWdlVGhyZWFkKiB0aHJlYWQpIHsgcmV0dXJuIG5ldyBM
b2NhbFN0b3JhZ2VUYXNrKFRlcm1pbmF0ZVRocmVhZCwgdGhyZWFkKTsgfQogCiAgICAgICAgIHZv
aWQgcGVyZm9ybVRhc2soKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YVN5bmMuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggNTlm
NTU4YmZhMTlkZTE1MzM5MThiNjA0YmVmMDdiM2UzMjFhNGY1Ny4uNmRjMjkzYTBjZmE2NmY5NzNk
YzFkODMxNWRmYzU4MmNmZWI0ZjJlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNRTGl0
ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJT
dG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKQEAgLTEw
MSw2ICsxMDIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVGaW5hbFN5bmMoKQog
ICAgIC8vIHdlIHNob3VsZCBkbyBpdCBzYWZlbHkuCiAgICAgbV9maW5hbFN5bmNTY2hlZHVsZWQg
PSB0cnVlOwogICAgIHN5bmNUaW1lckZpcmVkKCZtX3N5bmNUaW1lcik7CisgICAgbV9zeW5jTWFu
YWdlci0+c2NoZWR1bGVEZWxldGVFbXB0eURhdGFiYXNlKHRoaXMpOwogfQogCiB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6c2NoZWR1bGVJdGVtRm9yU3luYyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKQEAgLTMwNiw2ICszMDgsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6
c3luYyhib29sIGNsZWFySXRlbXMsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVt
cwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCisgICAgaWYgKGl0ZW1zLmlzRW1w
dHkoKSAmJiAhY2xlYXJJdGVtcykKKyAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2RhdGFiYXNl
T3BlbkZhaWxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKQEAgLTM5Myw2ICszOTcsMzQgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5j
KCkKICAgICBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVh
U3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCBDT1VOVCgqKSBGUk9N
IEl0ZW1UYWJsZSIpOworICAgIGlmIChxdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY291bnQgbnVtYmVyIG9mIHJvd3MgaW4gSXRl
bVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgpOworICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0
Um93KSB7CisgICAgICAgIExPR19FUlJPUigiTm8gcmVzdWx0cyB3aGVuIGNvdW50aW5nIG51bWJl
ciBvZiByb3dzIGluIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaW50IGNvdW50ID0gcXVlcnkuZ2V0Q29sdW1uSW50KDApOworICAg
IGlmICghY291bnQpIHsKKyAgICAgICAgcXVlcnkuZmluYWxpemUoKTsKKyAgICAgICAgbV9kYXRh
YmFzZS5jbG9zZSgpOworICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlbmFtZSA9IG1fc3luY01h
bmFnZXItPmZ1bGxEYXRhYmFzZUZpbGVuYW1lKG1fZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAg
ICAgaWYgKCFTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxl
bmFtZSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWxldGUgZGF0YWJhc2Ug
ZmlsZSAlc1xuIiwgZGF0YWJhc2VGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBiL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAppbmRleCBkMjZkMzk5NWJiOTI2Yzc0MDRhMTdiZTMz
ZDZkOWEwM2YyZThiNDc1Li5hMjZiMDQxMDNlZWQyMzJlMjIyOTM3M2ViN2RiYzYwMjZmOWNkYmZj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGJhY2tncm91bmQgdGhyZWFk
CiAgICAgICAgIHZvaWQgcGVyZm9ybUltcG9ydCgpOwogICAgICAgICB2b2lkIHBlcmZvcm1TeW5j
KCk7CisgICAgICAgIHZvaWQgZGVsZXRlRW1wdHlEYXRhYmFzZSgpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZW51bSBPcGVuRGF0YWJhc2VQYXJhbVR5cGUgewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcAppbmRleCBlYmYzNWJkNmVkZDM5YzA2MzgyZDlhNmZlZWI2NGIzMDg2
MzdlODhlLi4xY2Y4MzA2ZTk4ZTU4YjZjMDRiNDU1MWJlNjI5MzQzODVlM2ZiYmViIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtMTAwLDYgKzEwMCwxMyBAQCB2b2lk
IFN0b3JhZ2VTeW5jTWFuYWdlcjo6c2NoZWR1bGVTeW5jKFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFT
eW5jPiBhcmVhKQogICAgICAgICBtX3RocmVhZC0+c2NoZWR1bGVUYXNrKExvY2FsU3RvcmFnZVRh
c2s6OmNyZWF0ZVN5bmMoYXJlYS5nZXQoKSkpOwogfQogCit2b2lkIFN0b3JhZ2VTeW5jTWFuYWdl
cjo6c2NoZWR1bGVEZWxldGVFbXB0eURhdGFiYXNlKFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5j
PiBhcmVhKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fdGhy
ZWFkKTsKKyAgICBpZiAobV90aHJlYWQpCisgICAgICAgIG1fdGhyZWFkLT5zY2hlZHVsZVRhc2so
TG9jYWxTdG9yYWdlVGFzazo6Y3JlYXRlRGVsZXRlRW1wdHlEYXRhYmFzZShhcmVhLmdldCgpKSk7
Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JB
R0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmggYi9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKaW5kZXggZTJkZmE3NmFkMWM4MDJl
MWZlMjA2NTIwMDY4YTdlYjUwZDg0YjlmOC4uNmZiYjc1ZGFkMGIyMDQyOTM3ZTRlNDUxZDk5MGY1
MGI5MTFiNWFiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdl
ci5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaApAQCAtNDcsNiAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBzY2hlZHVsZUltcG9y
dChQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4pOwogICAgICAgICB2b2lkIHNjaGVkdWxlU3lu
YyhQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4pOworICAgICAgICB2b2lkIHNjaGVkdWxlRGVs
ZXRlRW1wdHlEYXRhYmFzZShQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4pOwogCiAgICAgICAg
IHZvaWQgY2xvc2UoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59081</attachid>
            <date>2010-06-18 01:37:56 -0700</date>
            <delta_ts>2010-06-21 07:50:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40767-20100618093754.patch</filename>
            <type>text/plain</type>
            <size>9451</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmU1NTYyZmU4M2Q0YmIwOTI2ZGJkZDZiYzE4Mzc1N2I4M2Q5YjU0OS4uMDMxNzRlZDkwNjYxYmRl
ZWUzZTkwZDVkYzAzMzFiYTNlZTVkNDllMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNi0xOCAgSGFu
cyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZSBET00gc3RvcmFnZSBkYXRhYmFzZXMgd2hl
biB0aGV5IGFyZSBlbXB0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwNzY3CisKKyAgICAgICAgRXZlbiBpZiBhIHBhZ2UgY2xlYXJzIGl0cyBsb2Nh
bCBzdG9yYWdlLCB0aGUgZGF0YWJhc2UgZmlsZSBmb3IgaXQgc3RheXMgYXJvdW5kLAorICAgICAg
ICBhbmQgdGhlcmUgaXMgY3VycmVudGx5IG5vIG1lY2hhbmlzbSB0aGF0IGRlbGV0ZXMgdGhlbS4K
KworICAgICAgICBBZnRlciBkb2luZyB0aGUgImZpbmFsIHN5bmMiIG9mIGEgc3RvcmFnZSBhcmVh
LCB0aGUgU3RvcmFnZUFyZWFTeW5jTWFzdGVyIHNob3VsZAorICAgICAgICBzZWUgaWYgdGhlIGRh
dGFiYXNlIGlzIGVtcHR5LCBhbmQgaW4gdGhhdCBjYXNlIGRlbGV0ZSBpdC4KKworICAgICAgICBU
ZXN0czoKKyAgICAgICAgIG1hbnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtZW1wdHktZGF0YWJhc2Uu
aHRtbAorCisgICAgICAgICogbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS1lbXB0eS1kYXRhYmFz
ZS5odG1sOgorICAgICAgICBBZGRlZCBsaW5rIHRvIGNsZWFyIGxvY2FsIHN0b3JhZ2UgZm9yIHRl
c3RpbmcgdGhhdCB0aGUgZmlsZSBpcyByZW1vdmVkLgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxT
dG9yYWdlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUYXNrOjpMb2Nh
bFN0b3JhZ2VUYXNrKToKKyAgICAgICAgQWRkZWQgbG9jYWwgc3RvcmFnZSB0YXNrIHR5cGUgRGVs
ZXRlRW1wdHlEYXRhYmFzZS4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRhc2s6OnBl
cmZvcm1UYXNrKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VUYXNrLmg6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUYXNrOjopOgorICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRhc2s6OmNyZWF0ZURlbGV0
ZUVtcHR5RGF0YWJhc2UpOgorICAgICAgICBEaXR0by4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnNjaGVk
dWxlRmluYWxTeW5jKToKKyAgICAgICAgV2hlbiBzY2hlZHVsaW5nIGZpbmFsIHN5bmMsIGFsc28g
c2NoZWR1bGUgRGVsZXRlRW1wdHlEYXRhYmFzZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhU3luYzo6c3luYyk6CisgICAgICAgIFJldHVybiBlYXJseSBpZiBmaW5hbCBzeW5jIGhhcyBu
b3RoaW5nIHRvIHN5bmMuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OmRlbGV0
ZUVtcHR5RGF0YWJhc2UpOgorICAgICAgICBBZGRlZCBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGRh
dGFiYXNlIGlzIGVtcHR5IGFuZCBpbiB0aGF0IGNhc2UgZGVsZXRlIGl0LgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmg6CisgICAgICAgIERpdHRvLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5j
TWFuYWdlcjo6c2NoZWR1bGVEZWxldGVFbXB0eURhdGFiYXNlKToKKyAgICAgICAgQWRkZWQgZnVu
Y3Rpb24gZm9yIHNjaGVkdWxpbmcgRGVsZXRlRW1wdHlEYXRhYmFzZSB0YXNrLgorICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmg6CisgICAgICAgIERpdHRvLgorCiAyMDEwLTA2
LTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjEzNzkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtZW1wdHktZGF0YWJhc2UuaHRtbCBiL1dlYkNvcmUvbWFu
dWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS1lbXB0eS1kYXRhYmFzZS5odG1sCmluZGV4IGExNjQxMjc1
YmFkMTdjNmE1YWQ5ZWQ4YTczYWFjMTkyNzE5MDRhZmIuLmQwZmNjNDExNjY4YjU5ZGU0MGJiOTdi
M2I4MTMyZjQ4MWNlOWYzZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xvY2Fs
c3RvcmFnZS1lbXB0eS1kYXRhYmFzZS5odG1sCisrKyBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xv
Y2Fsc3RvcmFnZS1lbXB0eS1kYXRhYmFzZS5odG1sCkBAIC04LDYgKzgsOSBAQCBTaW5jZSBubyBk
YXRhIGhhcyBiZWVuIHN0b3JlZCwgbm8gZGF0YWJhc2UgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNy
ZWF0ZWQuPC9wPgogCiA8cD5JZiB5b3UgY2xpY2sgPGEgaHJlZj0iamF2YXNjcmlwdDpsb2NhbFN0
b3JhZ2Uuc2V0SXRlbSgnYmFyJywgJ2JheicpOyI+aGVyZTwvYT4sIGRhdGEgd2lsbCBiZSBzdG9y
ZWQsIGFuZCBhIGRhdGFiYXNlIGZpbGUgc2hvdWxkIGJlIGNyZWF0ZWQuPC9wPgogCi08cD4oVGhp
cyBpcyBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQwMzAxIj5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMDE8L2E+
Lik8L3A+Cis8cD5JZiB5b3UgY2xpY2sgPGEgaHJlZj0iamF2YXNjcmlwdDpsb2NhbFN0b3JhZ2Uu
Y2xlYXIoKTsiPmhlcmU8L2E+LCB0aGUgbG9jYWwgc3RvcmFnZSB3aWxsIGJlIGNsZWFyZWQsIGFu
ZCB0aGUgZGF0YWJhc2UgZmlsZSBzaG91bGQgYmUgZ29uZSB3aGVuIHRoZSBicm93c2VyIGlzIGNs
b3NlZC48L3A+CisKKzxwPihUaGlzIGlzIGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMDEiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDMwMTwvYT4KK2FuZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NjciPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDc2NzwvYT4uKTwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VUYXNrLmNwcAppbmRleCAxMmNjMDgzYmVkMGE5MmMwYjhhZWY2Y2VkZGQ5MDg2NzQ5
YWZiNzZkLi5kMzFjOTkxNDkxN2ExY2E1ZTkyZGQ3NGFjNGM4MjU3M2VkNGFhM2JhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHAKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwCkBAIC0zOSw3ICszOSw3IEBAIExvY2FsU3RvcmFn
ZVRhc2s6OkxvY2FsU3RvcmFnZVRhc2soVHlwZSB0eXBlLCBTdG9yYWdlQXJlYVN5bmMqIGFyZWEp
CiAgICAgLCBtX3RocmVhZCgwKQogewogICAgIEFTU0VSVChtX2FyZWEpOwotICAgIEFTU0VSVCht
X3R5cGUgPT0gQXJlYUltcG9ydCB8fCBtX3R5cGUgPT0gQXJlYVN5bmMpOworICAgIEFTU0VSVCht
X3R5cGUgPT0gQXJlYUltcG9ydCB8fCBtX3R5cGUgPT0gQXJlYVN5bmMgfHwgbV90eXBlID09IERl
bGV0ZUVtcHR5RGF0YWJhc2UpOwogfQogCiBMb2NhbFN0b3JhZ2VUYXNrOjpMb2NhbFN0b3JhZ2VU
YXNrKFR5cGUgdHlwZSwgTG9jYWxTdG9yYWdlVGhyZWFkKiB0aHJlYWQpCkBAIC02NCw2ICs2NCw5
IEBAIHZvaWQgTG9jYWxTdG9yYWdlVGFzazo6cGVyZm9ybVRhc2soKQogICAgICAgICBjYXNlIEFy
ZWFTeW5jOgogICAgICAgICAgICAgbV9hcmVhLT5wZXJmb3JtU3luYygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRGVsZXRlRW1wdHlEYXRhYmFzZToKKyAgICAgICAgICAgIG1f
YXJlYS0+ZGVsZXRlRW1wdHlEYXRhYmFzZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVGVybWluYXRlVGhyZWFkOgogICAgICAgICAgICAgbV90aHJlYWQtPnBlcmZvcm1UZXJt
aW5hdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0xvY2FsU3RvcmFnZVRhc2suaCBiL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgK
aW5kZXggZGMzZTdlMmRhYzM1ZWM5ZWY5ZmE3MjgxZTdiMmZmNmIyMjQxMTAzYS4uOGQ1M2NlNGE1
MzY4YzViNjhmNWNjOTVmZjMzNzhlMDI5Nzk3N2M1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0xvY2FsU3RvcmFnZVRhc2suaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
VGFzay5oCkBAIC0zOSwxMiArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEZJ
WE1FOiBSZW5hbWUgdGhpcyBjbGFzcyB0byBTdG9yYWdlVGFzawogICAgIGNsYXNzIExvY2FsU3Rv
cmFnZVRhc2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51
bSBUeXBlIHsgQXJlYUltcG9ydCwgQXJlYVN5bmMsIFRlcm1pbmF0ZVRocmVhZCB9OworICAgICAg
ICBlbnVtIFR5cGUgeyBBcmVhSW1wb3J0LCBBcmVhU3luYywgRGVsZXRlRW1wdHlEYXRhYmFzZSwg
VGVybWluYXRlVGhyZWFkIH07CiAKICAgICAgICAgfkxvY2FsU3RvcmFnZVRhc2soKTsKIAogICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNrPiBjcmVhdGVJbXBvcnQoU3Rv
cmFnZUFyZWFTeW5jKiBhcmVhKSB7IHJldHVybiBuZXcgTG9jYWxTdG9yYWdlVGFzayhBcmVhSW1w
b3J0LCBhcmVhKTsgfQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNr
PiBjcmVhdGVTeW5jKFN0b3JhZ2VBcmVhU3luYyogYXJlYSkgeyByZXR1cm4gbmV3IExvY2FsU3Rv
cmFnZVRhc2soQXJlYVN5bmMsIGFyZWEpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPExv
Y2FsU3RvcmFnZVRhc2s+IGNyZWF0ZURlbGV0ZUVtcHR5RGF0YWJhc2UoU3RvcmFnZUFyZWFTeW5j
KiBhcmVhKSB7IHJldHVybiBuZXcgTG9jYWxTdG9yYWdlVGFzayhEZWxldGVFbXB0eURhdGFiYXNl
LCBhcmVhKTsgfQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNrPiBj
cmVhdGVUZXJtaW5hdGUoTG9jYWxTdG9yYWdlVGhyZWFkKiB0aHJlYWQpIHsgcmV0dXJuIG5ldyBM
b2NhbFN0b3JhZ2VUYXNrKFRlcm1pbmF0ZVRocmVhZCwgdGhyZWFkKTsgfQogCiAgICAgICAgIHZv
aWQgcGVyZm9ybVRhc2soKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YVN5bmMuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggNTlm
NTU4YmZhMTlkZTE1MzM5MThiNjA0YmVmMDdiM2UzMjFhNGY1Ny4uZTIwZjExYzY0ZGFiOWVhNmJi
ZjRmMjlhOWQxMDFjODYxZTg3YzBlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAK
QEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRl
U3RhdGVtZW50LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9y
YWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKICNpbmNsdWRl
ICJTdWRkZW5UZXJtaW5hdGlvbi5oIgpAQCAtMTAxLDYgKzEwMiw3IEBAIHZvaWQgU3RvcmFnZUFy
ZWFTeW5jOjpzY2hlZHVsZUZpbmFsU3luYygpCiAgICAgLy8gd2Ugc2hvdWxkIGRvIGl0IHNhZmVs
eS4KICAgICBtX2ZpbmFsU3luY1NjaGVkdWxlZCA9IHRydWU7CiAgICAgc3luY1RpbWVyRmlyZWQo
Jm1fc3luY1RpbWVyKTsKKyAgICBtX3N5bmNNYW5hZ2VyLT5zY2hlZHVsZURlbGV0ZUVtcHR5RGF0
YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzY2hlZHVsZUl0ZW1Gb3JT
eW5jKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtMzA2LDYgKzMw
OCw4IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jKGJvb2wgY2xlYXJJdGVtcywgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBpZiAoaXRlbXMuaXNFbXB0eSgpICYmICFjbGVhckl0ZW1zKQorICAgICAg
ICByZXR1cm47CiAgICAgaWYgKG1fZGF0YWJhc2VPcGVuRmFpbGVkKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMzkzLDYgKzM5NywzNCBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogICAgIGVuYWJsZVN1ZGRlblRlcm1pbmF0
aW9uKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFTeW5jOjpkZWxldGVFbXB0eURhdGFiYXNlKCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2Rh
dGFiYXNlLCAiU0VMRUNUIENPVU5UKCopIEZST00gSXRlbVRhYmxlIik7CisgICAgaWYgKHF1ZXJ5
LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgeworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjb3VudCBudW1iZXIgb2Ygcm93cyBpbiBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCByZXN1bHQgPSBxdWVyeS5zdGVwKCk7
CisgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJO
byByZXN1bHRzIHdoZW4gY291bnRpbmcgbnVtYmVyIG9mIHJvd3MgaW4gSXRlbVRhYmxlIGZvciBs
b2NhbCBzdG9yYWdlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgY291bnQg
PSBxdWVyeS5nZXRDb2x1bW5JbnQoMCk7CisgICAgaWYgKCFjb3VudCkgeworICAgICAgICBxdWVy
eS5maW5hbGl6ZSgpOworICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIFN0cmlu
ZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUo
bV9kYXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIVNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZUZpbGVuYW1lKSkKKyAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGRlbGV0ZSBkYXRhYmFzZSBmaWxlICVzXG4iLCBkYXRhYmFzZUZpbGVuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5oIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCmlu
ZGV4IGQyNmQzOTk1YmI5MjZjNzQwNGExN2JlMzNkNmQ5YTAzZjJlOGI0NzUuLmEyNmIwNDEwM2Vl
ZDIzMmUyMjI5MzczZWI3ZGJjNjAyNmY5Y2RiZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmgKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWxs
ZWQgZnJvbSB0aGUgYmFja2dyb3VuZCB0aHJlYWQKICAgICAgICAgdm9pZCBwZXJmb3JtSW1wb3J0
KCk7CiAgICAgICAgIHZvaWQgcGVyZm9ybVN5bmMoKTsKKyAgICAgICAgdm9pZCBkZWxldGVFbXB0
eURhdGFiYXNlKCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBlbnVtIE9wZW5EYXRhYmFzZVBh
cmFtVHlwZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IGViZjM1
YmQ2ZWRkMzljMDYzODJkOWE2ZmVlYjY0YjMwODYzN2U4OGUuLjFjZjgzMDZlOThlNThiNmMwNGI0
NTUxYmU2MjkzNDM4NWUzZmJiZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
U3luY01hbmFnZXIuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIu
Y3BwCkBAIC0xMDAsNiArMTAwLDEzIEBAIHZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVs
ZVN5bmMoUGFzc1JlZlB0cjxTdG9yYWdlQXJlYVN5bmM+IGFyZWEpCiAgICAgICAgIG1fdGhyZWFk
LT5zY2hlZHVsZVRhc2soTG9jYWxTdG9yYWdlVGFzazo6Y3JlYXRlU3luYyhhcmVhLmdldCgpKSk7
CiB9CiAKK3ZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZURlbGV0ZUVtcHR5RGF0YWJh
c2UoUGFzc1JlZlB0cjxTdG9yYWdlQXJlYVN5bmM+IGFyZWEpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWQpOworICAgIGlmIChtX3RocmVhZCkKKyAg
ICAgICAgbV90aHJlYWQtPnNjaGVkdWxlVGFzayhMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVEZWxl
dGVFbXB0eURhdGFiYXNlKGFyZWEuZ2V0KCkpKTsKK30KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaCBiL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlU3luY01h
bmFnZXIuaAppbmRleCBlMmRmYTc2YWQxYzgwMmUxZmUyMDY1MjAwNjhhN2ViNTBkODRiOWY4Li42
ZmJiNzVkYWQwYjIwNDI5MzdlNGU0NTFkOTkwZjUwYjkxMWI1YWI3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBib29sIHNjaGVkdWxlSW1wb3J0KFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5j
Pik7CiAgICAgICAgIHZvaWQgc2NoZWR1bGVTeW5jKFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5j
Pik7CisgICAgICAgIHZvaWQgc2NoZWR1bGVEZWxldGVFbXB0eURhdGFiYXNlKFBhc3NSZWZQdHI8
U3RvcmFnZUFyZWFTeW5jPik7CiAKICAgICAgICAgdm9pZCBjbG9zZSgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>