<?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>26155</bug_id>
          
          <creation_ts>2009-06-03 00:01:54 -0700</creation_ts>
          <short_desc>Implement an optional per-site quota for HTML 5 local / session storage</short_desc>
          <delta_ts>2010-06-10 17:31:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>jorlow</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124106</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 00:01:54 -0700</bug_when>
    <thetext>We should do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124107</commentid>
    <comment_count>1</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 00:02:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/6943189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124108</commentid>
    <comment_count>2</comment_count>
      <attachid>30892</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 00:06:46 -0700</bug_when>
    <thetext>Created attachment 30892
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124109</commentid>
    <comment_count>3</comment_count>
      <attachid>30893</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 00:11:10 -0700</bug_when>
    <thetext>Created attachment 30893
Proposed patch (with better ChangeLog)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124110</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-06-03 00:19:27 -0700</bug_when>
    <thetext>This patch includes some of the EXACT errors I pointed out from https://bugs.webkit.org/show_bug.cgi?id=22765

For example:
&quot;if (value != oldValue)&quot;
should probably be
&quot;if (!oldValue.isNull())&quot;

And:
&quot;m_totalUsage = m_totalUsage + value.length() * sizeof(UChar) - oldValue.length() * sizeof(UChar);&quot;
should probably just use a +=

And I still don&apos;t like the idea of doing the same computations in 2 places (the StorageArea and the StorageMap).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124112</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-06-03 00:23:56 -0700</bug_when>
    <thetext>Also, since this is for a fixed quota, it seems like you could easily add a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124113</commentid>
    <comment_count>6</comment_count>
      <attachid>30894</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 00:24:40 -0700</bug_when>
    <thetext>Created attachment 30894
Proposed patch (with better ChangeLog)

Does anyone have a better name for the ENABLE macro?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124118</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 00:37:41 -0700</bug_when>
    <thetext>Oh, I didn&apos;t see Jeremy&apos;s comment that there was already a bug with a stale patch for this. I&apos;ll take a look at the problems there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124121</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 01:17:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This patch includes some of the EXACT errors I pointed out from
&gt; https://bugs.webkit.org/show_bug.cgi?id=22765
&gt; 
&gt; For example:
&gt; &quot;if (value != oldValue)&quot;
&gt; should probably be
&gt; &quot;if (!oldValue.isNull())&quot;

That sounds good.

&gt; And:
&gt; &quot;m_totalUsage = m_totalUsage + value.length() * sizeof(UChar) -
&gt; oldValue.length() * sizeof(UChar);&quot;
&gt; should probably just use a +=

Yeah, I should probably do that. I almost changed it, but I left it that way because I wanted to be more explicit about the weirdness around the mixing of signed/unsigned 32-bit/64-bit types.

&gt; And I still don&apos;t like the idea of doing the same computations in 2 places (the
&gt; StorageArea and the StorageMap).

What do you propose? Make it so StorageMap::setItem() can fail due to a quota failure and then deal with it in the caller? That might be okay.

You mention quota management on the other bug. This probably requires a lot more code than what is here. You would need to have separate quotas for local and session storage per origin. For SQL storage, the quotas piggyback on the database, but we would need to add separate ChromeClient methods for getting the quota for each page and type of storage, asking the user to increase it, etc. Is this really necessary for a first cut?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124122</commentid>
    <comment_count>9</comment_count>
      <attachid>30894</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-06-03 01:23:14 -0700</bug_when>
    <thetext>Comment on attachment 30894
Proposed patch (with better ChangeLog)

r-ing this patch to deal with some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124161</commentid>
    <comment_count>10</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-06-03 09:56:26 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #4)
&gt; &gt; This patch includes some of the EXACT errors I pointed out from
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=22765
&gt; &gt; 
&gt; &gt; For example:
&gt; &gt; &quot;if (value != oldValue)&quot;
&gt; &gt; should probably be
&gt; &gt; &quot;if (!oldValue.isNull())&quot;
&gt; 
&gt; That sounds good.
&gt; 
&gt; &gt; And:
&gt; &gt; &quot;m_totalUsage = m_totalUsage + value.length() * sizeof(UChar) -
&gt; &gt; oldValue.length() * sizeof(UChar);&quot;
&gt; &gt; should probably just use a +=
&gt; 
&gt; Yeah, I should probably do that. I almost changed it, but I left it that way
&gt; because I wanted to be more explicit about the weirdness around the mixing of
&gt; signed/unsigned 32-bit/64-bit types.

I see.  I guess that makes sense.  Maybe you should change some of the existing +=&apos;s to just blah = blah + ... for consistency?  I know the first time I read that code, I was confused for a moment because of the difference.  Not a big deal though.
 
&gt; &gt; And I still don&apos;t like the idea of doing the same computations in 2 places (the
&gt; &gt; StorageArea and the StorageMap).
&gt; 
&gt; What do you propose? Make it so StorageMap::setItem() can fail due to a quota
&gt; failure and then deal with it in the caller? That might be okay.

That is what I&apos;d suggest.  I&apos;d probably just have setItem return a bool that says whether or not it succeeded and have the StorageArea::setItem code check for that and set the exception code.

&gt; You mention quota management on the other bug. This probably requires a lot
&gt; more code than what is here. You would need to have separate quotas for local
&gt; and session storage per origin. For SQL storage, the quotas piggyback on the
&gt; database, but we would need to add separate ChromeClient methods for getting
&gt; the quota for each page and type of storage, asking the user to increase it,
&gt; etc. Is this really necessary for a first cut?

No.  Think this is a good first cut and that a second package can clean it up.  But I&apos;m a bit biased because I&apos;m doing some re-factoring work in the space that would conflict with quota-management like what was in the other patch or even what I suggested.  :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30892</attachid>
            <date>2009-06-03 00:06:46 -0700</date>
            <delta_ts>2009-06-03 00:11:10 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>localstorage.diff</filename>
            <type>text/plain</type>
            <size>4841</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0Mzc5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDYt
MDIgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNjE1NTogSW1wbGVtZW50IGFu
IG9wdGlvbmFsIHBlci1zaXRlIHF1b3RhIGZvciBIVE1MIDUgbG9jYWwgc3RvcmFnZQorICAgICAg
ICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTU1PgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjk0MzE4OT4KKworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmludGVybmFsU2V0SXRlbSk6
CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VNYXA6OlN0b3JhZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6Y29w
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjpzZXRJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VNYXA6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZU1hcDo6aW1wb3J0SXRlbSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTWFwLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjp0b3RhbFVzYWdlKToKKwogMjAwOS0wNi0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
SHlhdHQuCkluZGV4OiBzdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9y
YWdlL1N0b3JhZ2VBcmVhLmNwcAkocmV2aXNpb24gNDQzNzgpCisrKyBzdG9yYWdlL1N0b3JhZ2VB
cmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTQgKzgzLDIzIEBAIHZvaWQgU3RvcmFnZUFy
ZWE6OmludGVybmFsU2V0SXRlbShjb25zdCAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IC8vIEZJWE1FOiBGb3IgTG9jYWxTdG9yYWdlIHdoZXJlIGEgZGlzayBxdW90YSB3aWxsIGJlIGVu
Zm9yY2VkLCBoZXJlIGlzIHdoZXJlIHdlIG5lZWQgdG8gZG8gcXVvdGEgY2hlY2tpbmcuCi0gICAg
Ly8gICAgICAgIElmIHdlIGRlY2lkZSB0byBlbmZvcmNlIGEgbWVtb3J5IHF1b3RhIGZvciBTZXNz
aW9uU3RvcmFnZSwgdGhpcyBpcyB3aGVyZSB3ZSdkIGRvIHRoYXQsIGFsc28uCi0gICAgLy8gaWYg
KDxvdmVyIHF1b3RhPikgewotICAgIC8vICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKLSAg
ICAvLyAgICAgcmV0dXJuOwotICAgIC8vIH0KLSAgICAKKyNpZiBFTkFCTEUoTE9DQUxfU1RPUkFH
RV9QRVJfU0lURV9RVU9UQSkKKyAgICBTdHJpbmcgb2xkVmFsdWUgPSBtX3N0b3JhZ2VNYXAtPmdl
dEl0ZW0oa2V5KTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2UgPSBtX3N0b3JhZ2VNYXAt
PnRvdGFsVXNhZ2UoKTsKKyAgICBpZiAodmFsdWUgIT0gb2xkVmFsdWUpCisgICAgICAgIHVzYWdl
ID0gdXNhZ2UgKyB2YWx1ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikgLSBvbGRWYWx1ZS5sZW5n
dGgoKTsKKyAgICBlbHNlCisgICAgICAgIHVzYWdlICs9IChrZXkubGVuZ3RoKCkgKyB2YWx1ZS5s
ZW5ndGgoKSkgKiBzaXplb2YoVUNoYXIpOworCisgICAgLy8gRklYTUU6IGFsbG93IHRoZSBwZXIt
c2l0ZSBxdW90YSB0byBiZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIGZpeGVkIDUgTUIgbGltaXQu
CisgICAgaWYgKHVzYWdlID4gNSAqIDEwMjQgKiAxMDI0KSB7CisgICAgICAgIGVjID0gUVVPVEFf
RVhDRUVERURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKICAgICBTdHJpbmcg
b2xkVmFsdWU7ICAgCisjZW5kaWYKKwogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBt
X3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUpOwogICAgIAogICAgIGlm
IChuZXdNYXApCkluZGV4OiBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0
b3JhZ2UvU3RvcmFnZU1hcC5jcHAJKHJldmlzaW9uIDQ0Mzc4KQorKysgc3RvcmFnZS9TdG9yYWdl
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOSBAQCBQYXNzUmVmUHRyPFN0b3Jh
Z2VNYXA+IFN0b3JhZ2VNYXA6OmNyZWF0CiBTdG9yYWdlTWFwOjpTdG9yYWdlTWFwKCkKICAgICA6
IG1faXRlcmF0b3IobV9tYXAuZW5kKCkpCiAgICAgLCBtX2l0ZXJhdG9ySW5kZXgoVUlOVF9NQVgp
CisjaWYgRU5BQkxFKExPQ0FMX1NUT1JBR0VfUEVSX1NJVEVfUVVPVEEpCisgICAgLCBtX3RvdGFs
VXNhZ2UoMCkKKyNlbmRpZgogewogfQogCkBAIC00Myw2ICs0Niw5IEBAIFBhc3NSZWZQdHI8U3Rv
cmFnZU1hcD4gU3RvcmFnZU1hcDo6Y29weSgKIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3
TWFwID0gY3JlYXRlKCk7CiAgICAgbmV3TWFwLT5tX21hcCA9IG1fbWFwOworI2lmIEVOQUJMRShM
T0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAgIG5ld01hcC0+bV90b3RhbFVzYWdlID0g
bV90b3RhbFVzYWdlOworI2VuZGlmCiAgICAgcmV0dXJuIG5ld01hcC5yZWxlYXNlKCk7CiB9CiAK
QEAgLTExMyw5ICsxMTksMTUgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpz
ZXRJdAogICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKSB7CiAgICAgICAgIC8vIFRoZXJlIHdhcyBu
byAib2xkVmFsdWUiIHNvIG51bGwgaXQgb3V0LgogICAgICAgICBvbGRWYWx1ZSA9IFN0cmluZygp
OworI2lmIEVOQUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAgICAgICBtX3Rv
dGFsVXNhZ2UgKz0gKGtleS5sZW5ndGgoKSArIHZhbHVlLmxlbmd0aCgpKSAqIHNpemVvZihVQ2hh
cik7CisjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBvbGRWYWx1ZSA9IGFkZFJlc3VsdC5m
aXJzdC0+c2Vjb25kOwogICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOwor
I2lmIEVOQUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAgICAgICBtX3RvdGFs
VXNhZ2UgPSBtX3RvdGFsVXNhZ2UgKyB2YWx1ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikgLSBv
bGRWYWx1ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CisjZW5kaWYKICAgICB9CiAKICAgICBp
bnZhbGlkYXRlSXRlcmF0b3IoKTsKQEAgLTEzNCw2ICsxNDYsMTAgQEAgUGFzc1JlZlB0cjxTdG9y
YWdlTWFwPiBTdG9yYWdlTWFwOjpyZW1vdgogICAgIH0KIAogICAgIG9sZFZhbHVlID0gbV9tYXAu
dGFrZShrZXkpOworI2lmIEVOQUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAg
IGlmICghb2xkVmFsdWUuaXNOdWxsKCkpCisgICAgICAgIG1fdG90YWxVc2FnZSAtPSAoa2V5Lmxl
bmd0aCgpICsgb2xkVmFsdWUubGVuZ3RoKCkpICogc2l6ZW9mKFVDaGFyKTsKKyNlbmRpZgogICAg
IGlmICghb2xkVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcigpOwog
CkBAIC0xNTMsNiArMTY5LDEwIEBAIHZvaWQgU3RvcmFnZU1hcDo6aW1wb3J0SXRlbShjb25zdCBT
dHJpbmcKIAogICAgIGlmIChyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9IHZhbHVlLmNvcHkoKTsKKworI2lmIEVOQUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRF
X1FVT1RBKQorICAgIG1fdG90YWxVc2FnZSArPSAoa2V5Lmxlbmd0aCgpICsgdmFsdWUubGVuZ3Ro
KCkpICogc2l6ZW9mKFVDaGFyKTsKKyNlbmRpZgogfQogCiB9CkluZGV4OiBzdG9yYWdlL1N0b3Jh
Z2VNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL1N0b3JhZ2VNYXAuaAkocmV2aXNpb24gNDQz
NzgpCisrKyBzdG9yYWdlL1N0b3JhZ2VNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgaW1wb3J0SXRlbShjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CiAKKyNpZiBFTkFCTEUo
TE9DQUxfU1RPUkFHRV9QRVJfU0lURV9RVU9UQSkKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsVXNhZ2UoKSB7IHJldHVybiBtX3RvdGFsVXNhZ2U7IH0KKyNlbmRpZgorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgU3RvcmFnZU1hcCgpOwogICAgICAgICBQYXNzUmVmUHRyPFN0b3JhZ2VN
YXA+IGNvcHkoKTsKQEAgLTU4LDYgKzYyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFwOwogICAgICAgICBtdXRhYmxl
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBtX2l0ZXJhdG9yOwogICAgICAgICBt
dXRhYmxlIHVuc2lnbmVkIG1faXRlcmF0b3JJbmRleDsKKyNpZiBFTkFCTEUoTE9DQUxfU1RPUkFH
RV9QRVJfU0lURV9RVU9UQSkKKyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBsb25nIGxvbmcgbV90
b3RhbFVzYWdlOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30893</attachid>
            <date>2009-06-03 00:11:10 -0700</date>
            <delta_ts>2009-06-03 00:24:40 -0700</delta_ts>
            <desc>Proposed patch (with better ChangeLog)</desc>
            <filename>localstorage.diff</filename>
            <type>text/plain</type>
            <size>4972</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0Mzc5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDYt
MDIgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNjE1NTogSW1wbGVtZW50IGFu
IG9wdGlvbmFsIHBlci1zaXRlIHF1b3RhIGZvciBIVE1MIDUgbG9jYWwgc3RvcmFnZQorICAgICAg
ICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTU1PgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjk0MzE4OT4KKworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmludGVybmFsU2V0SXRlbSk6
IGNoZWNrIHF1b3RhLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlTWFwOjpTdG9yYWdlTWFwKTogaW5pdGlhbGl6ZSBtX3RvdGFsVXNh
Z2UgdG8gMC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OmNvcHkpOiBjb3B5IG1fdG90
YWxVc2FnZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OnNldEl0ZW0pOiB1cGRhdGUg
bV90b3RhbFVzYWdlLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6cmVtb3ZlSXRlbSk6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6aW1wb3J0SXRlbSk6IGRpdHRv
LgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZU1hcDo6dG90YWxVc2FnZSk6IGFkZGVkLCBhbG9uZyB3aXRoIG1fdG90YWxTdG9yYWdlLgor
CiAyMDA5LTA2LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IHN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCShyZXZpc2lvbiA0NDM3OCkKKysr
IHN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxNCArODMsMjMg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6aW50ZXJuYWxTZXRJdGVtKGNvbnN0IAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEZvciBMb2NhbFN0b3JhZ2Ugd2hlcmUgYSBkaXNr
IHF1b3RhIHdpbGwgYmUgZW5mb3JjZWQsIGhlcmUgaXMgd2hlcmUgd2UgbmVlZCB0byBkbyBxdW90
YSBjaGVja2luZy4KLSAgICAvLyAgICAgICAgSWYgd2UgZGVjaWRlIHRvIGVuZm9yY2UgYSBtZW1v
cnkgcXVvdGEgZm9yIFNlc3Npb25TdG9yYWdlLCB0aGlzIGlzIHdoZXJlIHdlJ2QgZG8gdGhhdCwg
YWxzby4KLSAgICAvLyBpZiAoPG92ZXIgcXVvdGE+KSB7Ci0gICAgLy8gICAgIGVjID0gUVVPVEFf
RVhDRUVERURfRVJSOwotICAgIC8vICAgICByZXR1cm47Ci0gICAgLy8gfQotICAgIAorI2lmIEVO
QUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAgIFN0cmluZyBvbGRWYWx1ZSA9
IG1fc3RvcmFnZU1hcC0+Z2V0SXRlbShrZXkpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2Fn
ZSA9IG1fc3RvcmFnZU1hcC0+dG90YWxVc2FnZSgpOworICAgIGlmICh2YWx1ZSAhPSBvbGRWYWx1
ZSkKKyAgICAgICAgdXNhZ2UgPSB1c2FnZSArIHZhbHVlLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFy
KSAtIG9sZFZhbHVlLmxlbmd0aCgpOworICAgIGVsc2UKKyAgICAgICAgdXNhZ2UgKz0gKGtleS5s
ZW5ndGgoKSArIHZhbHVlLmxlbmd0aCgpKSAqIHNpemVvZihVQ2hhcik7CisKKyAgICAvLyBGSVhN
RTogYWxsb3cgdGhlIHBlci1zaXRlIHF1b3RhIHRvIGJlIHNvbWV0aGluZyBvdGhlciB0aGFuIGEg
Zml4ZWQgNSBNQiBsaW1pdC4KKyAgICBpZiAodXNhZ2UgPiA1ICogMTAyNCAqIDEwMjQpIHsKKyAg
ICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZWxzZQogICAgIFN0cmluZyBvbGRWYWx1ZTsgICAKKyNlbmRpZgorCiAgICAgUmVmUHRyPFN0b3Jh
Z2VNYXA+IG5ld01hcCA9IG1fc3RvcmFnZU1hcC0+c2V0SXRlbShrZXksIHZhbHVlLCBvbGRWYWx1
ZSk7CiAgICAgCiAgICAgaWYgKG5ld01hcCkKSW5kZXg6IHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAkocmV2aXNpb24gNDQzNzgpCisr
KyBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw5IEBA
IFBhc3NSZWZQdHI8U3RvcmFnZU1hcD4gU3RvcmFnZU1hcDo6Y3JlYXQKIFN0b3JhZ2VNYXA6OlN0
b3JhZ2VNYXAoKQogICAgIDogbV9pdGVyYXRvcihtX21hcC5lbmQoKSkKICAgICAsIG1faXRlcmF0
b3JJbmRleChVSU5UX01BWCkKKyNpZiBFTkFCTEUoTE9DQUxfU1RPUkFHRV9QRVJfU0lURV9RVU9U
QSkKKyAgICAsIG1fdG90YWxVc2FnZSgwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTQzLDYgKzQ2LDkg
QEAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpjb3B5KAogewogICAgIFJlZlB0
cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBjcmVhdGUoKTsKICAgICBuZXdNYXAtPm1fbWFwID0gbV9t
YXA7CisjaWYgRU5BQkxFKExPQ0FMX1NUT1JBR0VfUEVSX1NJVEVfUVVPVEEpCisgICAgbmV3TWFw
LT5tX3RvdGFsVXNhZ2UgPSBtX3RvdGFsVXNhZ2U7CisjZW5kaWYKICAgICByZXR1cm4gbmV3TWFw
LnJlbGVhc2UoKTsKIH0KIApAQCAtMTEzLDkgKzExOSwxNSBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VN
YXA+IFN0b3JhZ2VNYXA6OnNldEl0CiAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpIHsKICAgICAg
ICAgLy8gVGhlcmUgd2FzIG5vICJvbGRWYWx1ZSIgc28gbnVsbCBpdCBvdXQuCiAgICAgICAgIG9s
ZFZhbHVlID0gU3RyaW5nKCk7CisjaWYgRU5BQkxFKExPQ0FMX1NUT1JBR0VfUEVSX1NJVEVfUVVP
VEEpCisgICAgICAgIG1fdG90YWxVc2FnZSArPSAoa2V5Lmxlbmd0aCgpICsgdmFsdWUubGVuZ3Ro
KCkpICogc2l6ZW9mKFVDaGFyKTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIG9sZFZh
bHVlID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7CiAgICAgICAgIGFkZFJlc3VsdC5maXJzdC0+
c2Vjb25kID0gdmFsdWU7CisjaWYgRU5BQkxFKExPQ0FMX1NUT1JBR0VfUEVSX1NJVEVfUVVPVEEp
CisgICAgICAgIG1fdG90YWxVc2FnZSA9IG1fdG90YWxVc2FnZSArIHZhbHVlLmxlbmd0aCgpICog
c2l6ZW9mKFVDaGFyKSAtIG9sZFZhbHVlLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIGludmFsaWRhdGVJdGVyYXRvcigpOwpAQCAtMTM0LDYgKzE0NiwxMCBA
QCBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnJlbW92CiAgICAgfQogCiAgICAg
b2xkVmFsdWUgPSBtX21hcC50YWtlKGtleSk7CisjaWYgRU5BQkxFKExPQ0FMX1NUT1JBR0VfUEVS
X1NJVEVfUVVPVEEpCisgICAgaWYgKCFvbGRWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgbV90b3Rh
bFVzYWdlIC09IChrZXkubGVuZ3RoKCkgKyBvbGRWYWx1ZS5sZW5ndGgoKSkgKiBzaXplb2YoVUNo
YXIpOworI2VuZGlmCiAgICAgaWYgKCFvbGRWYWx1ZS5pc051bGwoKSkKICAgICAgICAgaW52YWxp
ZGF0ZUl0ZXJhdG9yKCk7CiAKQEAgLTE1Myw2ICsxNjksMTAgQEAgdm9pZCBTdG9yYWdlTWFwOjpp
bXBvcnRJdGVtKGNvbnN0IFN0cmluZwogCiAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCiAgICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kID0gdmFsdWUuY29weSgpOworCisjaWYgRU5BQkxFKExPQ0FM
X1NUT1JBR0VfUEVSX1NJVEVfUVVPVEEpCisgICAgbV90b3RhbFVzYWdlICs9IChrZXkubGVuZ3Ro
KCkgKyB2YWx1ZS5sZW5ndGgoKSkgKiBzaXplb2YoVUNoYXIpOworI2VuZGlmCiB9CiAKIH0KSW5k
ZXg6IHN0b3JhZ2UvU3RvcmFnZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0b3JhZ2UvU3RvcmFnZU1h
cC5oCShyZXZpc2lvbiA0NDM3OCkKKysrIHN0b3JhZ2UvU3RvcmFnZU1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9p
ZCBpbXBvcnRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dDsKIAorI2lmIEVOQUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAgICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxVc2FnZSgpIHsgcmV0dXJuIG1fdG90YWxVc2FnZTsgfQor
I2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlTWFwKCk7CiAgICAgICAgIFBh
c3NSZWZQdHI8U3RvcmFnZU1hcD4gY29weSgpOwpAQCAtNTgsNiArNjIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9tYXA7
CiAgICAgICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIG1faXRl
cmF0b3I7CiAgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9pdGVyYXRvckluZGV4OworI2lmIEVO
QUJMRShMT0NBTF9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKQorICAgICAgICBtdXRhYmxlIHVuc2ln
bmVkIGxvbmcgbG9uZyBtX3RvdGFsVXNhZ2U7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30894</attachid>
            <date>2009-06-03 00:24:40 -0700</date>
            <delta_ts>2010-06-10 17:31:37 -0700</delta_ts>
            <desc>Proposed patch (with better ChangeLog)</desc>
            <filename>localstorage.diff</filename>
            <type>text/plain</type>
            <size>5235</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0Mzc5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDktMDYt
MDIgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNjE1NTogSW1wbGVtZW50IGFu
IG9wdGlvbmFsIHBlci1zaXRlIHF1b3RhIGZvciBIVE1MIDUgbG9jYWwgLyBzZXNzaW9uIHN0b3Jh
Z2UKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE1
NT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NDMxODk+CisKKyAgICAgICAgQWRkIEVOQUJM
RShMT0NBTF9BTkRfU0VTU0lPTl9TVE9SQUdFX1BFUl9TSVRFX1FVT1RBKSBhbmQgaW1wbGVtZW50
IGFuCisgICAgICAgIG9wdGlvbmFsIHBlci1zaXRlIHF1b3RhIGZvciBsb2NhbCBhbmQgc2Vzc2lv
biBzdG9yYWdlLgorCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6aW50ZXJuYWxTZXRJdGVtKTogY2hlY2sgcXVvdGEuCisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VNYXA6OlN0b3JhZ2VNYXApOiBpbml0aWFsaXplIG1fdG90YWxVc2FnZSB0byAwLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6Y29weSk6IGNvcHkgbV90b3RhbFVzYWdlLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6c2V0SXRlbSk6IHVwZGF0ZSBtX3RvdGFsVXNhZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjpyZW1vdmVJdGVtKTogZGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlTWFwOjppbXBvcnRJdGVtKTogZGl0dG8uCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjp0b3RhbFVz
YWdlKTogYWRkZWQsIGFsb25nIHdpdGggbV90b3RhbFN0b3JhZ2UuCisKIDIwMDktMDYtMDIgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEh5YXR0LgpJbmRleDogc3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Rv
cmFnZS9TdG9yYWdlQXJlYS5jcHAJKHJldmlzaW9uIDQ0Mzc4KQorKysgc3RvcmFnZS9TdG9yYWdl
QXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDE0ICs4MywyMyBAQCB2b2lkIFN0b3JhZ2VB
cmVhOjppbnRlcm5hbFNldEl0ZW0oY29uc3QgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBGSVhNRTogRm9yIExvY2FsU3RvcmFnZSB3aGVyZSBhIGRpc2sgcXVvdGEgd2lsbCBiZSBl
bmZvcmNlZCwgaGVyZSBpcyB3aGVyZSB3ZSBuZWVkIHRvIGRvIHF1b3RhIGNoZWNraW5nLgotICAg
IC8vICAgICAgICBJZiB3ZSBkZWNpZGUgdG8gZW5mb3JjZSBhIG1lbW9yeSBxdW90YSBmb3IgU2Vz
c2lvblN0b3JhZ2UsIHRoaXMgaXMgd2hlcmUgd2UnZCBkbyB0aGF0LCBhbHNvLgotICAgIC8vIGlm
ICg8b3ZlciBxdW90YT4pIHsKLSAgICAvLyAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7Ci0g
ICAgLy8gICAgIHJldHVybjsKLSAgICAvLyB9Ci0gICAgCisjaWYgRU5BQkxFKExPQ0FMX0FORF9T
RVNTSU9OX1NUT1JBR0VfUEVSX1NJVEVfUVVPVEEpCisgICAgU3RyaW5nIG9sZFZhbHVlID0gbV9z
dG9yYWdlTWFwLT5nZXRJdGVtKGtleSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlID0g
bV9zdG9yYWdlTWFwLT50b3RhbFVzYWdlKCk7CisgICAgaWYgKHZhbHVlICE9IG9sZFZhbHVlKQor
ICAgICAgICB1c2FnZSA9IHVzYWdlICsgdmFsdWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpIC0g
b2xkVmFsdWUubGVuZ3RoKCk7CisgICAgZWxzZQorICAgICAgICB1c2FnZSArPSAoa2V5Lmxlbmd0
aCgpICsgdmFsdWUubGVuZ3RoKCkpICogc2l6ZW9mKFVDaGFyKTsKKworICAgIC8vIEZJWE1FOiBh
bGxvdyB0aGUgcGVyLXNpdGUgcXVvdGEgdG8gYmUgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBmaXhl
ZCA1IE1CIGxpbWl0LgorICAgIGlmICh1c2FnZSA+IDUgKiAxMDI0ICogMTAyNCkgeworICAgICAg
ICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNl
CiAgICAgU3RyaW5nIG9sZFZhbHVlOyAgIAorI2VuZGlmCisKICAgICBSZWZQdHI8U3RvcmFnZU1h
cD4gbmV3TWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9sZFZhbHVlKTsK
ICAgICAKICAgICBpZiAobmV3TWFwKQpJbmRleDogc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCShyZXZpc2lvbiA0NDM3OCkKKysrIHN0
b3JhZ2UvU3RvcmFnZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDkgQEAgUGFz
c1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpjcmVhdAogU3RvcmFnZU1hcDo6U3RvcmFn
ZU1hcCgpCiAgICAgOiBtX2l0ZXJhdG9yKG1fbWFwLmVuZCgpKQogICAgICwgbV9pdGVyYXRvcklu
ZGV4KFVJTlRfTUFYKQorI2lmIEVOQUJMRShMT0NBTF9BTkRfU0VTU0lPTl9TVE9SQUdFX1BFUl9T
SVRFX1FVT1RBKQorICAgICwgbV90b3RhbFVzYWdlKDApCisjZW5kaWYKIHsKIH0KIApAQCAtNDMs
NiArNDYsOSBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OmNvcHkoCiB7CiAg
ICAgUmVmUHRyPFN0b3JhZ2VNYXA+IG5ld01hcCA9IGNyZWF0ZSgpOwogICAgIG5ld01hcC0+bV9t
YXAgPSBtX21hcDsKKyNpZiBFTkFCTEUoTE9DQUxfQU5EX1NFU1NJT05fU1RPUkFHRV9QRVJfU0lU
RV9RVU9UQSkKKyAgICBuZXdNYXAtPm1fdG90YWxVc2FnZSA9IG1fdG90YWxVc2FnZTsKKyNlbmRp
ZgogICAgIHJldHVybiBuZXdNYXAucmVsZWFzZSgpOwogfQogCkBAIC0xMTMsOSArMTE5LDE1IEBA
IFBhc3NSZWZQdHI8U3RvcmFnZU1hcD4gU3RvcmFnZU1hcDo6c2V0SXQKICAgICBpZiAoYWRkUmVz
dWx0LnNlY29uZCkgewogICAgICAgICAvLyBUaGVyZSB3YXMgbm8gIm9sZFZhbHVlIiBzbyBudWxs
IGl0IG91dC4KICAgICAgICAgb2xkVmFsdWUgPSBTdHJpbmcoKTsKKyNpZiBFTkFCTEUoTE9DQUxf
QU5EX1NFU1NJT05fU1RPUkFHRV9QRVJfU0lURV9RVU9UQSkKKyAgICAgICAgbV90b3RhbFVzYWdl
ICs9IChrZXkubGVuZ3RoKCkgKyB2YWx1ZS5sZW5ndGgoKSkgKiBzaXplb2YoVUNoYXIpOworI2Vu
ZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgb2xkVmFsdWUgPSBhZGRSZXN1bHQuZmlyc3QtPnNl
Y29uZDsKICAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsKKyNpZiBFTkFC
TEUoTE9DQUxfQU5EX1NFU1NJT05fU1RPUkFHRV9QRVJfU0lURV9RVU9UQSkKKyAgICAgICAgbV90
b3RhbFVzYWdlID0gbV90b3RhbFVzYWdlICsgdmFsdWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
IC0gb2xkVmFsdWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgaW52YWxpZGF0ZUl0ZXJhdG9yKCk7CkBAIC0xMzQsNiArMTQ2LDEwIEBAIFBhc3NSZWZQdHI8
U3RvcmFnZU1hcD4gU3RvcmFnZU1hcDo6cmVtb3YKICAgICB9CiAKICAgICBvbGRWYWx1ZSA9IG1f
bWFwLnRha2Uoa2V5KTsKKyNpZiBFTkFCTEUoTE9DQUxfQU5EX1NFU1NJT05fU1RPUkFHRV9QRVJf
U0lURV9RVU9UQSkKKyAgICBpZiAoIW9sZFZhbHVlLmlzTnVsbCgpKQorICAgICAgICBtX3RvdGFs
VXNhZ2UgLT0gKGtleS5sZW5ndGgoKSArIG9sZFZhbHVlLmxlbmd0aCgpKSAqIHNpemVvZihVQ2hh
cik7CisjZW5kaWYKICAgICBpZiAoIW9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3IoKTsKIApAQCAtMTUzLDYgKzE2OSwxMCBAQCB2b2lkIFN0b3JhZ2VNYXA6Omlt
cG9ydEl0ZW0oY29uc3QgU3RyaW5nCiAKICAgICBpZiAocmVzdWx0LnNlY29uZCkKICAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZS5jb3B5KCk7CisKKyNpZiBFTkFCTEUoTE9DQUxf
QU5EX1NFU1NJT05fU1RPUkFHRV9QRVJfU0lURV9RVU9UQSkKKyAgICBtX3RvdGFsVXNhZ2UgKz0g
KGtleS5sZW5ndGgoKSArIHZhbHVlLmxlbmd0aCgpKSAqIHNpemVvZihVQ2hhcik7CisjZW5kaWYK
IH0KIAogfQpJbmRleDogc3RvcmFnZS9TdG9yYWdlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3RvcmFn
ZS9TdG9yYWdlTWFwLmgJKHJldmlzaW9uIDQ0Mzc4KQorKysgc3RvcmFnZS9TdG9yYWdlTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGltcG9ydEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUpIGNvbnN0OwogCisjaWYgRU5BQkxFKExPQ0FMX0FORF9TRVNTSU9OX1NUT1JBR0VfUEVS
X1NJVEVfUVVPVEEpCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbFVzYWdlKCkgeyBy
ZXR1cm4gbV90b3RhbFVzYWdlOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFN0
b3JhZ2VNYXAoKTsKICAgICAgICAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBjb3B5KCk7CkBAIC01
OCw2ICs2Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBtX21hcDsKICAgICAgICAgbXV0YWJsZSBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPjo6aXRlcmF0b3IgbV9pdGVyYXRvcjsKICAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2l0ZXJhdG9ySW5kZXg7CisjaWYgRU5BQkxFKExPQ0FMX0FORF9TRVNTSU9OX1NUT1JBR0VfUEVS
X1NJVEVfUVVPVEEpCisgICAgICAgIG11dGFibGUgdW5zaWduZWQgbG9uZyBsb25nIG1fdG90YWxV
c2FnZTsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="15697"
          type_id="1"
          status="-"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>